From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B76571531E3 for ; Thu, 31 Jul 2025 05:36:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940208; cv=none; b=CGvxBKMfSjNKDvBbBaa4amBA9D3c6Y5GlobIUaLqSOGTUwHU+cT6U4LLyU9m96nEAvQI0k0z1tq4h4+VHxTlVgpNe3RaRRWqOjYkZF1IAJuM/Zk712mqWF61oq4tBgGDErTD/oXreOnWw5Q8U1qfiz2hOTCVbDzEBE5eoUvo2hY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940208; c=relaxed/simple; bh=uiDe3EZE8VVdRtDer1s/9EkBTNCfHbICAi+aridXu6M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iOWmjwbh8optnhm/oCiqJp8T1znTmt/9iN6+ToKaxRlj2PPNYTpcy/MWskpzexGWOVzwJ/NccHhZkBgu9OPEP0WcNkGlowOTLDygNqznUMET9qMF92AsBad+vdyeKVh+9wRYvOO0bXdhdC43QArIgvhaVQ7TtGBGkYd+Uv32vuM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ELH+/pxY; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ELH+/pxY" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3b7825e2775so415035f8f.2 for ; Wed, 30 Jul 2025 22:36:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940205; x=1754545005; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ciDcGD9tQuLy73W2iFAgqEh2yygZMEmdyq/oIgQDGc8=; b=ELH+/pxYs25c7syZWVLIy6f2w/3InR8GuR6KqmudQ+f0Bm7UUik3L3TrMvqwN7cl43 S28fICd+zJD0LLHdKCVPzsD/2851om3KyHyml7wfnhyEui4dyDA7t1TaYKuL2fsl2Vlt fQnBoROqoWpE758bFbZFCS638B1KO0whpZ0TEJOKAVl0XUr7gR9i3EClseuuAXfxxVa9 sGNAaWRUhTpfVpchTImZGiiDyQJvvq3osW2GmLO40i/7eqSuopVvkaCdg7jucOIqY0ww UEIlifnIaSKVBp2ICCnvWhOCTP7GGdmv7GkxPbfLnnLT2zWbxJoOFc0jFUfTPd+3wRcn Y0ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940205; x=1754545005; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ciDcGD9tQuLy73W2iFAgqEh2yygZMEmdyq/oIgQDGc8=; b=cT4aapUoQ5AQjTiSxD5rnuDMGFfZqozSC0XAxgA81entwpkt8h6W0T5boG2o3BjV5O FVs3y26ZT8/yCBkpvMzAlGMbbcp8JhaNe/p1J5wJO1dUmP1Pzxy/PyLn6SLFqf+JgkMi JIIqK/vB6TreszWm3lDoF6epGVAmaMt+QrzSPwrgI5ldjt/BGEncLz72NUgaww15LZn+ lnguQnovjuq08LdW5hx8OzMaa+dDDXOeExiWDxuL5dYNf+U0Rxxdcat8mH9awWKAbW5r owpbiYG+9mdJ2Puia44cVzeW5z8ToQ9LuESyXd8bIy0bYjE1qwtlIYK4VK+RFAMzWGLz vGjg== X-Forwarded-Encrypted: i=1; AJvYcCWyOQshaK4mO+9yXqghfJVc4AUyi6PtHz9J6c9KuDEbpprGyKZlBk6cfIG/DwKfLhl2ZJ2/GuLy1bTt8u4=@vger.kernel.org X-Gm-Message-State: AOJu0YwxSRm+sCtysDVoBy7nrOCjEP41nP1Qd46m62mb1nFogj1AlqJh WJJ7pZQj5ArB8ghHnKbRmoh/KUJOpwmdOSslsXv13GefdxKyqHAMvfvk X-Gm-Gg: ASbGncs9iCCopM4R2tAh5UsxxQOm/Gs+NEuwyF6MS0so321SJibdC5zgGFV2LpmNDUk odBtp+pqtSCJvbtNwYbRDNCrfu9dUhrRRC0WnTRrUp4tg7RP6KDgBThowcGMjfuu/rjY4Cc2DfQ I5gxxmQcm22X5YVA8ZMnAV5gF7mrm+CZfrTKLpnK8+3sgcIOamSWiReLUmz7dKVgqeIAHNAaBm8 mScW1qCAYuWtKrntRW9TC5QfgxsETqQKgdH/tWth2a90uYl5QyRo16MMIhi39fztRFpfOFi8FX3 QBNfNMkBzTdbm6e9C6q8Hh0VZAEnzuW/s3+1Ca5Ogfeh99VHes7qtgxUeNMrrmawbf68Ch/rp8l +NHfi1d9Ao+VbYlSxoCDhuR+AUdf//qiH5PFssUbVfWwU29dLdfRcYd9aflNx X-Google-Smtp-Source: AGHT+IFQg3GjgMIShqv9r+GrnPQh0001v5pGFRp3EPBPGnnFSydrqIzNSmvTsnfK9s5diM+fkCt51Q== X-Received: by 2002:a05:6000:230a:b0:3b7:6205:25c7 with SMTP id ffacd0b85a97d-3b794fed24amr4608870f8f.13.1753940204915; Wed, 30 Jul 2025 22:36:44 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:44 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:34 +0200 Subject: [PATCH RFC 1/6] drm/amdgpu: don't wake up the GPU for some IOCTLs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-1-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a From: Alex Deucher Don't wake the GPU if the IOCTL doesn't need to power up the GPU. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Alex Deucher Tested-by: Philipp Zabel Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 60 +++++++++++++++++++++++++++++= +--- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index 3bb9b25cd1219..34b9d63a86227 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2926,23 +2926,73 @@ static int amdgpu_drm_release(struct inode *inode, = struct file *filp) return drm_release(inode, filp); } =20 +static const unsigned int no_wake_ioctl_list[] =3D { + DRM_IOCTL_VERSION, + DRM_IOCTL_GET_UNIQUE, + DRM_IOCTL_GET_MAGIC, + DRM_IOCTL_GET_CLIENT, + DRM_IOCTL_GET_STATS, + DRM_IOCTL_GET_CAP, + DRM_IOCTL_SET_CLIENT_CAP, + DRM_IOCTL_SET_VERSION, + DRM_IOCTL_SET_UNIQUE, + DRM_IOCTL_BLOCK, + DRM_IOCTL_UNBLOCK, + DRM_IOCTL_AUTH_MAGIC, + DRM_IOCTL_SET_MASTER, + DRM_IOCTL_ADD_DRAW, + DRM_IOCTL_RM_DRAW, + DRM_IOCTL_FINISH, + DRM_IOCTL_UPDATE_DRAW, + DRM_IOCTL_MODE_GETRESOURCES, + DRM_IOCTL_MODE_GETPLANERESOURCES, + DRM_IOCTL_MODE_GETCRTC, + DRM_IOCTL_MODE_GETPLANE, + DRM_IOCTL_MODE_GETGAMMA, + DRM_IOCTL_MODE_GETENCODER, + DRM_IOCTL_MODE_ATTACHMODE, + DRM_IOCTL_MODE_DETACHMODE, + DRM_IOCTL_MODE_GETPROPERTY, + DRM_IOCTL_MODE_GETPROPBLOB, + DRM_IOCTL_MODE_OBJ_GETPROPERTIES, + DRM_IOCTL_MODE_CREATEPROPBLOB, + DRM_IOCTL_MODE_DESTROYPROPBLOB, + DRM_IOCTL_MODE_CREATE_LEASE, + DRM_IOCTL_MODE_LIST_LESSEES, + DRM_IOCTL_MODE_GET_LEASE, + DRM_IOCTL_MODE_REVOKE_LEASE, +}; + long amdgpu_drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct drm_file *file_priv =3D filp->private_data; struct drm_device *dev; long ret; + bool wake =3D true; + int i; + + for (i =3D 0; i < ARRAY_SIZE(no_wake_ioctl_list); i++) { + if (cmd =3D=3D no_wake_ioctl_list[i]) { + wake =3D false; + break; + } + } =20 dev =3D file_priv->minor->dev; - ret =3D pm_runtime_get_sync(dev->dev); - if (ret < 0) - goto out; + if (wake) { + ret =3D pm_runtime_get_sync(dev->dev); + if (ret < 0) + goto out; + } =20 ret =3D drm_ioctl(filp, cmd, arg); =20 - pm_runtime_mark_last_busy(dev->dev); + if (wake) + pm_runtime_mark_last_busy(dev->dev); out: - pm_runtime_put_autosuspend(dev->dev); + if (wake) + pm_runtime_put_autosuspend(dev->dev); return ret; } =20 --=20 2.50.1 From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5096923F41A for ; Thu, 31 Jul 2025 05:36:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940210; cv=none; b=JgYpjR5TavUbOgYNnEb1S5qdcuwtbiQw2TqKK2ehGIVF0riiZOairYgY4ZkUCgX+eL5ariR9/8M6x+dYihTHB5oPf5XwW6GJ1PiU68SGdVz/32/uhcASKZj8NsvPPb1PviDewbsMbfJKi8WZV5U9ZLr5r+RRxAjlQQNk+xiiuAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940210; c=relaxed/simple; bh=7I6sal06IFxjih0fDGj/VH/J/XAMAfdhnR2uzo00UkI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ap+86nw04qeVxO5DudDKzwM/AamFSWTe4o6O6njjxT4KEgFQwawEuiI/pSvTUy/b8xZrBRiqGGA9KvKeYT8uxi9GZ+cMRU8tL1EwCskOD6z3zMkJp6Ip+gev5WH9n6ukr6AG8EBLFE9iS2X4KflXH9QMjF6FJzBHdtqlcdvXOQc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VHY5nu04; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VHY5nu04" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3b7910123a0so543551f8f.1 for ; Wed, 30 Jul 2025 22:36:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940206; x=1754545006; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=55O+VIoR/xi+3QJpaWR1sqlb+0LX3xYA869Y7SaOfBE=; b=VHY5nu0428y/Yb4jawfpGZw1gjr3VMF8+s/vbj2Xsw3F8RREY2o4oKU39IxjOFKcMT KXvuy6BJDy/UflYFdNGdEJ7eIfDyDmokZZTFc/VsgB6bYEjPBzA3RI2ua23dwPToyxEO 6WFCHllDoRCOh5b6R+iVO+/igu/YugCGQS8SYNaHUlASkR91IJ9yYFWClHz7fYGgq7eM M/zmYFGdhgGY6rLebDnEEUZ/TmyDf0ofJL7ox5GG7z9hi66n5At/tHnKyyhoiqyK0QxC z0t3RvjiH6jOqQ423Wp79N+5GXcsXpNLOfQCZv0obUv2Q4/oPKGEhRHVAG1DYvcdLHi2 17Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940206; x=1754545006; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=55O+VIoR/xi+3QJpaWR1sqlb+0LX3xYA869Y7SaOfBE=; b=bwhN6NPcAdblF8QtoTQZlpJhpaSjCc2PJgvCFyCv6Cv4vWTnkbJFW7eK1eG24/sqNI Wlw9Jr4Aw3ku4mXaRmSDqEcqguOQ1xri9df83I7tS1zzuvdxKow3YzhYhDOaDvyApFo/ XqL0U9DTY1wNqBBVIZw3vQSyM8n3XUuDDKKjHJRHKRauvHzBXhF/+qO8hDXMEZjAejnW Zir3+Hgd9d5FbiGmkefYefxV0XVqwU/lrCb58AydEakc8OUGBQ9klrvML3kP/zg1g0GK T6lkngWPauNAV+zC/ix9S5mvcSJVsL80GUpvnyE6N/VrCsyR95CfTHIR+aQHcOlJjUlh MLGA== X-Forwarded-Encrypted: i=1; AJvYcCX5eRnAPrmcvmSADaCzX+lHh97gcTNdwSB2KLPjy6jMcAR1pLWD5jMZ0lQg3U3qYR0tckdCgHtqGDgqER8=@vger.kernel.org X-Gm-Message-State: AOJu0YxNCdvxnSNsmRl04cxNpqfICjz6J9vOMjYapK+fxgb2rQQRfoSo GheKSr2t5Kt6X/GJd0Fv90apq66wLEGzKcvs8fo9XeVXKvbOCd3v2YzZ X-Gm-Gg: ASbGncuW5wXXCWDxBVpLKea2+zSSE8PV+xcKiKzYBqaMUYGFXpOjbzZRZlp3QTF7MZJ T8oT3LpxQdvd3+MHwk+LOf48gy7BHYG0EurRO8az0iH0xr2H9PaseFqgy9TpGOPZjYt21CFS1Q7 PgqfjeyhoqvvlqCy3xaqRnq1BsBFEowzzUpJP2rn0/V5AMbb2S8s68/OK6Jh4xEPRhIA4sigBlk k5oHzJkHbTezfLje4xHfV/1YmlgCde0jk7Z0czHeb7Elrsfb8rivgvmD0c6aosSgCKg0D+XxtuJ kOjCj6bQjDcfNHiVtpSL5HoPoArpk2X1JDhuxqUrNzRctArO9OE/nftxyYhOpYDo9IF/vBDQPCO yP8Dj56YyqHq05FRTEmYgdaA/WX3F7GtJwLyeD389sGqlnBmKobJCHSeAN48w X-Google-Smtp-Source: AGHT+IGzUXir19zXUYKXSGg93uN8+VK+de8qh6rGcvNpNSIf0qBeuNeoorLazodERZ0vHpkgXIleng== X-Received: by 2002:a05:6000:2387:b0:3b7:9aff:db60 with SMTP id ffacd0b85a97d-3b79affdbc3mr1504704f8f.10.1753940206455; Wed, 30 Jul 2025 22:36:46 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:45 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:35 +0200 Subject: [PATCH RFC 2/6] drm/amdgpu: don't wake up the GPU when opening the device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-2-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a Don't wake the GPU when opening the device. Delay amdgpu_fpriv (and with it VM) initialization until the first IOCTL that wakes the GPU anyway, unless it is already active. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 3 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 11 +++++ drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c | 3 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 66 ++++++++++++++++++++-----= ---- 5 files changed, 68 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdg= pu/amdgpu.h index a1737556a77eb..e33c90c44697e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -508,6 +508,8 @@ struct amdgpu_fpriv { =20 /** GPU partition selection */ uint32_t xcp_id; + struct mutex init_lock; + bool initialized; }; =20 int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv); @@ -1617,6 +1619,8 @@ extern const int amdgpu_max_kms_ioctl; int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags= ); void amdgpu_driver_unload_kms(struct drm_device *dev); int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_p= riv); +int amdgpu_driver_init_fpriv(struct drm_device *dev, struct drm_file *file= _priv, + struct amdgpu_fpriv *fpriv); void amdgpu_driver_postclose_kms(struct drm_device *dev, struct drm_file *file_priv); void amdgpu_driver_release_kms(struct drm_device *dev); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/= amd/amdgpu/amdgpu_debugfs.c index 0e6e2e2acf5b5..2b6cb3b1ca276 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c @@ -1784,6 +1784,9 @@ static int amdgpu_debugfs_vm_info_show(struct seq_fil= e *m, void *unused) struct amdgpu_vm *vm =3D &fpriv->vm; struct amdgpu_task_info *ti; =20 + if (!fpriv->initialized) + continue; + ti =3D amdgpu_vm_get_task_info_vm(vm); if (ti) { seq_printf(m, "pid:%d\tProcess:%s ----------\n", ti->task.pid, ti->proc= ess_name); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index 34b9d63a86227..732f398922da5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2967,6 +2967,7 @@ long amdgpu_drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct drm_file *file_priv =3D filp->private_data; + struct amdgpu_fpriv *fpriv =3D file_priv->driver_priv; struct drm_device *dev; long ret; bool wake =3D true; @@ -2984,10 +2985,17 @@ long amdgpu_drm_ioctl(struct file *filp, ret =3D pm_runtime_get_sync(dev->dev); if (ret < 0) goto out; + + if (unlikely(!fpriv->initialized)) { + ret =3D amdgpu_driver_init_fpriv(dev, file_priv, fpriv); + if (ret < 0) + goto out_suspend; + } } =20 ret =3D drm_ioctl(filp, cmd, arg); =20 +out_suspend: if (wake) pm_runtime_mark_last_busy(dev->dev); out: @@ -3017,6 +3025,9 @@ static int amdgpu_flush(struct file *f, fl_owner_t id) struct amdgpu_fpriv *fpriv =3D file_priv->driver_priv; long timeout =3D MAX_WAIT_SCHED_ENTITY_Q_EMPTY; =20 + if (!fpriv->initialized) + return 0; + timeout =3D amdgpu_ctx_mgr_entity_flush(&fpriv->ctx_mgr, timeout); timeout =3D amdgpu_vm_wait_idle(&fpriv->vm, timeout); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_fdinfo.c index 91d638098889d..e13024bcd8bd1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.c @@ -73,6 +73,9 @@ void amdgpu_show_fdinfo(struct drm_printer *p, struct drm= _file *file) }; unsigned int hw_ip, i; =20 + if (!fpriv->initialized) + return; + amdgpu_vm_get_memory(vm, stats); amdgpu_ctx_mgr_usage(&fpriv->ctx_mgr, usage); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_kms.c index 8a76960803c65..60f36e03def2a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -1382,7 +1382,7 @@ int amdgpu_driver_open_kms(struct drm_device *dev, st= ruct drm_file *file_priv) { struct amdgpu_device *adev =3D drm_to_adev(dev); struct amdgpu_fpriv *fpriv; - int r, pasid; + int r; =20 /* Ensure IB tests are run on ring */ flush_delayed_work(&adev->delayed_init_work); @@ -1395,16 +1395,45 @@ int amdgpu_driver_open_kms(struct drm_device *dev, = struct drm_file *file_priv) =20 file_priv->driver_priv =3D NULL; =20 - r =3D pm_runtime_get_sync(dev->dev); + fpriv =3D kzalloc(sizeof(*fpriv), GFP_KERNEL); + if (unlikely(!fpriv)) + return -ENOMEM; + + mutex_init(&fpriv->init_lock); + + r =3D pm_runtime_get_if_active(dev->dev); if (r < 0) - goto pm_put; + goto error_free; =20 - fpriv =3D kzalloc(sizeof(*fpriv), GFP_KERNEL); - if (unlikely(!fpriv)) { - r =3D -ENOMEM; - goto out_suspend; + if (r =3D=3D 1) { + r =3D amdgpu_driver_init_fpriv(dev, file_priv, fpriv); + + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + + if (r < 0) + goto error_free; } =20 + file_priv->driver_priv =3D fpriv; + return 0; + +error_free: + kfree(fpriv); + + return r; +} + +int amdgpu_driver_init_fpriv(struct drm_device *dev, struct drm_file *file= _priv, + struct amdgpu_fpriv *fpriv) +{ + struct amdgpu_device *adev =3D drm_to_adev(dev); + int r, pasid; + + mutex_lock(&fpriv->init_lock); + if (fpriv->initialized) + goto out_unlock; + pasid =3D amdgpu_pasid_alloc(16); if (pasid < 0) { dev_warn(adev->dev, "No more PASIDs available!"); @@ -1457,8 +1486,8 @@ int amdgpu_driver_open_kms(struct drm_device *dev, st= ruct drm_file *file_priv) =20 amdgpu_ctx_mgr_init(&fpriv->ctx_mgr, adev); =20 - file_priv->driver_priv =3D fpriv; - goto out_suspend; + fpriv->initialized =3D true; + goto out_unlock; =20 error_vm: amdgpu_vm_fini(adev, &fpriv->vm); @@ -1469,13 +1498,8 @@ int amdgpu_driver_open_kms(struct drm_device *dev, s= truct drm_file *file_priv) amdgpu_vm_set_pasid(adev, &fpriv->vm, 0); } =20 - kfree(fpriv); - -out_suspend: - pm_runtime_mark_last_busy(dev->dev); -pm_put: - pm_runtime_put_autosuspend(dev->dev); - +out_unlock: + mutex_unlock(&fpriv->init_lock); return r; } =20 @@ -1500,6 +1524,9 @@ void amdgpu_driver_postclose_kms(struct drm_device *d= ev, if (!fpriv) return; =20 + if (!fpriv->initialized) + goto out_free; + pm_runtime_get_sync(dev->dev); =20 if (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_UVD) !=3D NULL) @@ -1537,11 +1564,12 @@ void amdgpu_driver_postclose_kms(struct drm_device = *dev, idr_destroy(&fpriv->bo_list_handles); mutex_destroy(&fpriv->bo_list_lock); =20 - kfree(fpriv); - file_priv->driver_priv =3D NULL; - pm_runtime_mark_last_busy(dev->dev); pm_runtime_put_autosuspend(dev->dev); + +out_free: + kfree(fpriv); + file_priv->driver_priv =3D NULL; } =20 =20 --=20 2.50.1 From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5E9524336B for ; Thu, 31 Jul 2025 05:36:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940211; cv=none; b=ItrVt6qEEw+drTq4hcVMDryHflgdi6GgXfyz6jqDaKZQqefioWp8nfNEafvWJVVfQhIAmlvYkSAw+BhB4nHSjvKy7sFAgkf0XZsTv0VzGwQJYO9a6TgI6dC/QwO1LTxVywKzfij7iAOuxoaVVfwP7m2kBlEcbtQXPeIILGk7vhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940211; c=relaxed/simple; bh=Qf72vCrFpWA/LHVYHcKO+jvYrXE1Ym1za1XLlSRgDbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WveKf4e8J6CnT8cHtRPmLHZZfdtxedmftdR2WOEky2hjS1tkZFlo8vAz3SqbSGJSxMNUsKTKjfxhprYmb4AECXDtg9xoVAnsJQUhrqzyHrSXOyWg7KkykDsD6+C6cB23OO6Clt8xCEJ6AdbJDfVDfvR1cPzIBDkLD4PE8FaG9nY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h47x8iUP; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h47x8iUP" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4563cfac2d2so4654715e9.3 for ; Wed, 30 Jul 2025 22:36:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940208; x=1754545008; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cYq6/WMdCGI3NVumhbssuyW0E52SNpXkJoe+qhP+t+w=; b=h47x8iUPlklMcMEpAoPRqvZs80qG2nUm4oJwAZ+5tAzMPfAyEkVZTcHLUDLeLRyc68 +FuSFf9677Jldd8Gif0pK7i4EDnXpmxzGPUm0BcLfkyv4NNnwFENE82XFNcFrL1dhcds KTWCgzFqaLXC15vyjKZWtyBuEjie3ALdthtKsDZMTizEy07/EuNorcWHQt6A2+pkfK2F yLuoD2IaQ+Y6m7EYdQuy8zjFZdt4QOkaB1gjh7Z1ylMeOcNptNvlzemMWMkimgMxzWzX uWK0Ela+6HINpoqwHnWJTdrPi5Tz7jMQNP1KZMFE2u/aJKCwPomjEuo52HBOgE2PWexF yGCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940208; x=1754545008; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cYq6/WMdCGI3NVumhbssuyW0E52SNpXkJoe+qhP+t+w=; b=sv6wK5eokPed6chXLNed737k66UM+CjuLRquDs9Gi/Ntzdlt+0GXH7ORG2byFMV0fJ V3P2yih+gv7xoblaB7bYDCrmYIK3lPT/ofXyHBrrGN3Rwv8Fpng/p4CsJYqq7a34OoIy zmA8W8r1Eb06FU1ju6Xg41/CbAtpxEj+TC8XCbp1xylS6BvJIW1vHWoOy4R0+KOBhX1S ek7imTOkclxNJI6BIaWEgkFXalQBBSI0T9ltDFSdFJSXBs9ZLlNbMa/6BpUlm2uXWOZW 4CbyYdsLVkps9tKZkmhtkMN1jlasklndaMsha4RFp3Mj/xi6SClhL5py9Tvtgzkq3E5U urVw== X-Forwarded-Encrypted: i=1; AJvYcCV2ei9rr9npJr1P1Phy8fGi4Z1fjrSgVggR9jRMIFGrv5Vr+3kwquPUtdYg8jCrOicqqwqyMeINo1kl1+g=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2+q5Lz5nqBYYhOTcUKGVf3u1IVEAmLwWgiXkVyWgrBohFOJUt MCJkg3nBmiIIIvtPUAGS3uNRlmKp/KJCSPWQLdyekoqkQR2Tw9c6Rzjv X-Gm-Gg: ASbGncth8L1briAebQapModBDBSdeZHjEhXGT6vuPci6OjM663+mwdprUmPn/0hEfB2 aujRcGHiTrNwtytIih+BIqFNJg8/ktM0QqHdFTUFXutUUholhtJlv/9/shnBN6JOVGWhk3Ln4yq q6SQRFGM1jxfXUlde4ZGBvZCn2Ugdu3QYb8/zzDhPpphmbJAglWb+LhZ3T06wk5fDVKO0Hdesjz Fe7AiJhfDb/e3OnEsIsp6qNVAS/t7+p7ScsgUX4ZTAjXdVccd0WTCv+Nqi6WpSg0l9YsU7ujtrd xoCpwcfSwLy9nuO3+BseNqa9NAjqBkPZkAUBnt4fdi2cR6v16G1r7BpD3EhbLvgBpIrCuG42ktN vytfHPRVbvCmO8IMP7ShiIezo3olaEFenOlCvdvuBNhjD9lsaP+8yP1XHEuSf X-Google-Smtp-Source: AGHT+IEp5VCzLJr0X68P0qy3TU0LoV0niMRhq9/WEWNUYlkHD0hdkBSjsI1HL68vgVh52+E/1wlU1A== X-Received: by 2002:a05:600c:518f:b0:456:1d06:f38b with SMTP id 5b1f17b1804b1-45892b9da13mr49754965e9.8.1753940207960; Wed, 30 Jul 2025 22:36:47 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:47 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:36 +0200 Subject: [PATCH RFC 3/6] drm/amdgpu: don't query xclk in AMDGPU_INFO_DEV_INFO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-3-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a Cache the xclk rate during amdgpu_device_init() and return the cached value in the AMDGPU_INFO_DEV_INFO query. This will allow to avoid waking up the GPU for this query later. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdg= pu/amdgpu.h index e33c90c44697e..35827a0cca780 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -431,6 +431,7 @@ struct amdgpu_clock { struct amdgpu_pll spll; struct amdgpu_pll mpll; /* 10 Khz units */ + u32 xclk; uint32_t default_mclk; uint32_t default_sclk; uint32_t default_dispclk; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_device.c index 79d0ff0bda290..44a8fad60512e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -4818,6 +4818,8 @@ int amdgpu_device_init(struct amdgpu_device *adev, if (r) goto failed; =20 + adev->clock.xclk =3D amdgpu_asic_get_xclk(adev); + return 0; =20 release_ras_con: diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_kms.c index 60f36e03def2a..190602bacbcdf 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -911,7 +911,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *dat= a, struct drm_file *filp) dev_info->num_shader_engines =3D adev->gfx.config.max_shader_engines; dev_info->num_shader_arrays_per_engine =3D adev->gfx.config.max_sh_per_s= e; /* return all clocks in KHz */ - dev_info->gpu_counter_freq =3D amdgpu_asic_get_xclk(adev) * 10; + dev_info->gpu_counter_freq =3D adev->clock.xclk * 10; if (adev->pm.dpm_enabled) { dev_info->max_engine_clock =3D amdgpu_dpm_get_sclk(adev, false) * 10; dev_info->max_memory_clock =3D amdgpu_dpm_get_mclk(adev, false) * 10; --=20 2.50.1 From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CC66245008 for ; Thu, 31 Jul 2025 05:36:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940213; cv=none; b=ZaQ0eLdKsHz/pDY/kowZderKyikyI8oR6HG1jCkIlFAuDHpYa6j4H5kLzQqmcCSH59c/e5MiEK/ZPZolXOT0i72Gp6/qwcchll4eGijio7vccoc3pg8M+sVKPRCCM6R0NSd025UtUu2l4cNglPv4N0YL/BCwOqLxcyvu1hM/gI8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940213; c=relaxed/simple; bh=Ao4pyMiEC9kkzAazsUh+aMjntp6mPoSWds/tlQrBDTs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Tk2RNF1u0ZLUoW82byd7x9k429txmA/3yYpCljLHsbboJsfUiQIMEKiT29Qh8PirLq5CiGS+veBdTB7gIGpkt1tZFeGGFRgMe+pwnhn6vxXCz8Ym3qG+6z1gjTFFUmT19R6hVLBLjYLDwr1vNkF7rhZ4eKgUJ2C5bvKDKVT0HV8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Bd4Wi0nL; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Bd4Wi0nL" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3b78bca0890so344942f8f.3 for ; Wed, 30 Jul 2025 22:36:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940210; x=1754545010; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=c1dd0Ga2iTCujV4ta9gqgLx9Y4mluBxA0AcKr2gNUmQ=; b=Bd4Wi0nLqxA4HMvMzvioi9Yq1AymrFIoEt+sv8/2OumnL0HRS7ULUH8abDU150faNk Q1bXSfGvxzsLzDvpX3RjMGlzGAVyUpNu/CZSCugSfs1pV1d0H6bjcbsaFmivUMEfapcx D6jguBp5hTxsKKByrJv3eC2qwAvwCin6pWvRqrC5JDVbWSQnAdGgltkD8hrCePqa6gGO yc1VEx9Ja8Fxp+VrMIqOpzd8ly+TNPE7jKzhbnnuiRTirJ1npLuSQd8XtZm2ToZPjKqv bm4bj1/Vc1Nqr1BfWtr0IfvsXvETmYtEsXKMNq6ER22ihO72PwgNV1rdcCscKy37P8TG D1YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940210; x=1754545010; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c1dd0Ga2iTCujV4ta9gqgLx9Y4mluBxA0AcKr2gNUmQ=; b=qO+XyAI0pc11l8zFPKXfdUfRt6yhVRd1eqSnNH8dl2Vu8iy5INDgp8mACPJitFI5CP cgQEAqmacG09NNA4QjndDxDyY1V7j6moDaRHnA+cx8ZLsZVG4yzXdnM6DLGYAu1klbvd yrIPpygymkvGABRfKjOHp0KCzuLvmG3d/1Kk1O1JaEbYi/fJ9ZgR97fwNwWOLTUsZmkr zQIIrKNrnCRQShOX/O550qsnVkvVO45BPfXteWWcaWrrsdyZWwL92FD5o5VX+0F4jaO5 UMUWckQh+FjkYFNsJt3fcAvlxPsUsaC6K3jApOzkkgBBrPlpT0lP+vuS+EtGbh1nkSCR OZdw== X-Forwarded-Encrypted: i=1; AJvYcCXJiBI1KbzBqf5JGQuh+kpAYjVDPXWgk7KmNl+GjLOyhph+rPyVluvjmpfvlVCl6DwYkPcGPSzBK57kprQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyX8Nw1v+8e+oO5j0116iyzaSbb5EOQ3KGqC+UUTqCqxKSpbgiY 42p/FPAEa0MhVt5EVhL9uTxVT9FwHaLLO5nyN/vjL+VV66nM/bqsYXLu X-Gm-Gg: ASbGnctGLtQJm6b1sQtprfrR8OTyT3wUACrGnDYIHjUuQtsX+F9+NjCWd3vFgYOebns 5SHUlFN8CkDmFHiR0uJW7Plb/2y1oCsZJDlMBFVNgVoKddKR5V/kkvjjiLNAC26OdNZyAwJ/86+ LarC03YY7tDqLyOA84X/QDQpsnqEHgQ8ahMuLibvTBsvwliADOMVZ1xZaJBCqCfL1fMbtTk6+8o 0NvHNbJgNLnoPOekNqJbCm1C2iMRYooKurm2Bk4KaUtFkN1NJ46N1SIm5iRRlfpFIHgNtFIGlMT Dh4VO9/fN/LNpXjJJFwXhiQBdiNGbEFACuHrxMM0rx1WbmtpNyOFNqycKaROKSAkERRjh/6yI7V H+uIVmXU4ldAa6OKCXE7fnOux+/fF0USVaWYep7L5grStcvo1kYaLcUBgexuc X-Google-Smtp-Source: AGHT+IGlIhfe1+ha/9LeqXoxdlGCP3fC0KLx/czzY6T8qRlm4KfCZ4cgQx6QeotUnn1aepuzecDbCQ== X-Received: by 2002:a05:6000:288a:b0:3b7:9477:f4ad with SMTP id ffacd0b85a97d-3b794fe92c2mr4075356f8f.36.1753940209428; Wed, 30 Jul 2025 22:36:49 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:48 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:37 +0200 Subject: [PATCH RFC 4/6] drm/amdgpu: don't wake up the GPU for some AMDGPU_INFO queries Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-4-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a Don't wake the GPU if the AMDGPU_INFO query doesn't need to power up the GPU. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 59 +++++++++++++++++++++++++++--= ---- 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index 732f398922da5..79d31ac6a7b37 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2961,6 +2961,7 @@ static const unsigned int no_wake_ioctl_list[] =3D { DRM_IOCTL_MODE_LIST_LESSEES, DRM_IOCTL_MODE_GET_LEASE, DRM_IOCTL_MODE_REVOKE_LEASE, + DRM_IOCTL_AMDGPU_INFO, }; =20 long amdgpu_drm_ioctl(struct file *filp, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_kms.c index 190602bacbcdf..fe1347a4075c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -732,7 +732,17 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *da= ta, struct drm_file *filp) return copy_to_user(out, &count, min(size, 4u)) ? -EFAULT : 0; } case AMDGPU_INFO_TIMESTAMP: + ret =3D pm_runtime_get_sync(dev->dev); + if (ret < 0) { + pm_runtime_put_autosuspend(dev->dev); + return ret; + } + ui64 =3D amdgpu_gfx_get_gpu_clock_counter(adev); + + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; case AMDGPU_INFO_FW_VERSION: { struct drm_amdgpu_info_firmware fw_info; @@ -873,6 +883,12 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *da= ta, struct drm_file *filp) =20 alloc_size =3D info->read_mmr_reg.count * sizeof(*regs); =20 + ret =3D pm_runtime_get_sync(dev->dev); + if (ret < 0) { + pm_runtime_put_autosuspend(dev->dev); + goto out; + } + amdgpu_gfx_off_ctrl(adev, false); for (i =3D 0; i < info->read_mmr_reg.count; i++) { if (amdgpu_asic_read_register(adev, se_num, sh_num, @@ -882,11 +898,16 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) info->read_mmr_reg.dword_offset + i); kfree(regs); amdgpu_gfx_off_ctrl(adev, true); + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); ret =3D -EFAULT; goto out; } } amdgpu_gfx_off_ctrl(adev, true); + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + n =3D copy_to_user(out, regs, min(size, alloc_size)); kfree(regs); ret =3D (n ? -EFAULT : 0); @@ -912,7 +933,8 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *dat= a, struct drm_file *filp) dev_info->num_shader_arrays_per_engine =3D adev->gfx.config.max_sh_per_s= e; /* return all clocks in KHz */ dev_info->gpu_counter_freq =3D adev->clock.xclk * 10; - if (adev->pm.dpm_enabled) { + ret =3D pm_runtime_get_if_active(dev->dev); + if (ret =3D=3D 1 && adev->pm.dpm_enabled) { dev_info->max_engine_clock =3D amdgpu_dpm_get_sclk(adev, false) * 10; dev_info->max_memory_clock =3D amdgpu_dpm_get_mclk(adev, false) * 10; dev_info->min_engine_clock =3D amdgpu_dpm_get_sclk(adev, true) * 10; @@ -925,6 +947,10 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *da= ta, struct drm_file *filp) dev_info->min_memory_clock =3D adev->clock.default_mclk * 10; } + if (ret =3D=3D 1) { + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + } dev_info->enabled_rb_pipes_mask =3D adev->gfx.config.backend_enable_mask; dev_info->num_rb_pipes =3D adev->gfx.config.max_backends_per_se * adev->gfx.config.max_shader_engines; @@ -1125,13 +1151,19 @@ int amdgpu_info_ioctl(struct drm_device *dev, void = *data, struct drm_file *filp) if (!adev->pm.dpm_enabled) return -ENOENT; =20 + ret =3D pm_runtime_get_sync(dev->dev); + if (ret < 0) { + pm_runtime_put_autosuspend(dev->dev); + return ret; + } + switch (info->sensor_info.type) { case AMDGPU_INFO_SENSOR_GFX_SCLK: /* get sclk in Mhz */ if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } ui32 /=3D 100; break; @@ -1140,7 +1172,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_MCLK, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } ui32 /=3D 100; break; @@ -1149,7 +1181,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_TEMP, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } break; case AMDGPU_INFO_SENSOR_GPU_LOAD: @@ -1157,7 +1189,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_LOAD, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } break; case AMDGPU_INFO_SENSOR_GPU_AVG_POWER: @@ -1169,7 +1201,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_INPUT_POWER, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } } ui32 >>=3D 8; @@ -1188,7 +1220,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } break; case AMDGPU_INFO_SENSOR_VDDGFX: @@ -1196,7 +1228,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } break; case AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK: @@ -1204,7 +1236,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } ui32 /=3D 100; break; @@ -1213,7 +1245,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *d= ata, struct drm_file *filp) if (amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK, (void *)&ui32, &ui32_size)) { - return -EINVAL; + ret =3D -EINVAL; } ui32 /=3D 100; break; @@ -1238,8 +1270,13 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *= data, struct drm_file *filp) default: DRM_DEBUG_KMS("Invalid request %d\n", info->sensor_info.type); - return -EINVAL; + ret =3D -EINVAL; + break; } + pm_runtime_mark_last_busy(dev->dev); + pm_runtime_put_autosuspend(dev->dev); + if (ret < 0) + return ret; return copy_to_user(out, &ui32, min(size, 4u)) ? -EFAULT : 0; } case AMDGPU_INFO_VRAM_LOST_COUNTER: --=20 2.50.1 From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF89B2459D9 for ; Thu, 31 Jul 2025 05:36:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940214; cv=none; b=KTamwLTNL42LWVVeDS5Ov5FEAYouFLavLPW21mnc0dCpmFwbJ93zG5PzO1Cn+Y0sd7ImBnDoc9biU7n15dFEenYD5DCZpJRHO20licmJDWw+iDROlcgvf8KXt4EesyJEI6gK9/dv0AuqXN9tYPfAWwvL25jSxURYXZLPAFHSOXs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940214; c=relaxed/simple; bh=e9p8Vf3O57OZuGOWvZZZd2cfUDkdH21iEMUPIiiRtO0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sRT13RlXne8T1QJarYNqfmNbtmkC+KOkV8CHo8DaRfoEzIaL6geNiHhrAEAiVHgQ0Vb7EcVNiqOF+rXMkr8/oB5pmxlC0Uzd/yLlkWCoEXFLXF8wIT5jX9TKmSwIvtfGZAk54OkJ36CiN9AycpEV4ibS2ETLd70pbnOXmyWBrx0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=miATHBLi; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="miATHBLi" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3b783ea5014so290608f8f.0 for ; Wed, 30 Jul 2025 22:36:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940211; x=1754545011; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=5L5CPo11vx1WT5kIB7Vz4RYoRKGO5r44hwwfolXkFs4=; b=miATHBLi2cKR8Mc1Fd5x8z2wRaNtjljxw0xVRitwPqgP/fVgdL12S2ez0UkzR3qzQL BGZCAyWywZsSDv1WP+gwQFxKoWVB4PkenASDwBHVokFb90cMCu/pabH7JMHoEX8Q1Qnb flj00q2Gre9nKwb3Q1eqdZHnWQBXA8l+tBw9FXVe6AXiQwoyE6CQexrQlS1qWlqOIBXG FAeS0DQycx7iENozGK7/zvYlNgmE3QP+/3QZHtphby6+cMg6cjFeoXH4Z99GlkMRewEH PY8Q7pHm9oSwpF6KFPoUnIYzRNWpJztJsDehLjiDIbNfQdUqdphmRV2w7MAcB8jBwEk5 slkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940211; x=1754545011; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5L5CPo11vx1WT5kIB7Vz4RYoRKGO5r44hwwfolXkFs4=; b=GorvKH0p2vTu91vBOvHOMd5bKTfQUO7FMqICYr7sBdhaXEtQcRqD2x9GYdXSJdp/WM 6HRMpx5Xf6sBnE+hJZ2TlTldkoDn/b/OH8OwqxsElYuuFlvKuJ3V8QPNaX48h6J51336 EDlsd5HgaP1+1GWDxST2U27jSP1Sos+zqMYdd7rstPt4n/dtziODpdTsK5u6+/gPBz1O hgddMiEO68LTju/MXXlZcA0tqWjRP3WL8wFlKV/sc/09ji373SjLAhj/pjycyQ3znpYP mf81Z11rovxQ9dimF7K+V26yhPfGZVwxmvAnpXY6WU8QK6gB/q7QsWy45e6iVXvYJ2Zx UCng== X-Forwarded-Encrypted: i=1; AJvYcCU6yBlqWgGVc1gV/3p2SNgMZb14ObupAE82UvsIo41VUfyIAD+9bhBpQWX9M4N+46nr2UO1WOw2pBYRKKg=@vger.kernel.org X-Gm-Message-State: AOJu0YweA+B47At2bDT6LhGCsnrCPDw3zUqBUf8tgJn9afBogmFy2AIx hCkaEXz4M+5GAIi4M7C+7SdsT31jEoGwVxHukOMKy+G6f+7bkulKNdiX X-Gm-Gg: ASbGncv+fIkt9JJMFXyff9seeZnx1LukOMu1AEJ2tNvcMnzoihlxuTzmP+tNJo0PwSv J54QWXl9qd4S+9HU/VpjhleQT06gcuEaRSE3U3JXISBTUp9vlRxVuNlOMZH3LrQdDgyduG4EuUc e1O72Wa1C2OLVeDXZL04YS8Se+zyln3dQqIY/N2A2D3Yy//DiJ76IOvWHhrfz203Yhuox/qkslA SYg/i+zbbunx8Bd/boIl1kZ6WUzWAuw7OKw5wt8KyRmLMJuu38NT0n92++afSodR4E8U4bB169B rU3O0HqvtI+Rui/TUtgjag7ViYwg/utsOWUf+HHs7Dwb8GPN+K2zOHFXZg7K7TYPVQBJQdA7N8Q No6z9MOVocNwqcuB2m7dikQYxp3hsqfV3ThJuh5Wgt++PXzdjHWnWIJJYZX0GY7KA6vQmJGs= X-Google-Smtp-Source: AGHT+IEEFZqWGgNeRd5nb5UBRZkfnTiNiCgdeRhXusb9GlwFSioJhj2kNspsCCRhW9Y+Hhgyh9TqGA== X-Received: by 2002:a05:6000:40c8:b0:3a4:f66a:9d31 with SMTP id ffacd0b85a97d-3b794fd59bbmr4759177f8f.16.1753940210946; Wed, 30 Jul 2025 22:36:50 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:50 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:38 +0200 Subject: [PATCH RFC 5/6] drm/amdgpu: don't wake up the GPU for mmGB_ADDR_CONFIG register read Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-5-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a Don't wake the GPU if libdrm queries the mmGB_ADDR_CONFIG register value during amdgpu_query_gpu_info_init(). Instead, return the already cached value adev->gfx.config.gb_addr_config. Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_kms.c index fe1347a4075c4..ed4d7d72f2065 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -883,6 +883,16 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *da= ta, struct drm_file *filp) =20 alloc_size =3D info->read_mmr_reg.count * sizeof(*regs); =20 + if (info->read_mmr_reg.dword_offset =3D=3D 0x263e && + info->read_mmr_reg.count =3D=3D 1) { + /* Return cached value of mmGB_ADDR_CONFIG */ + regs[0] =3D adev->gfx.config.gb_addr_config; + + n =3D copy_to_user(out, regs, min(size, alloc_size)); + kfree(regs); + return n ? -EFAULT : 0; + } + ret =3D pm_runtime_get_sync(dev->dev); if (ret < 0) { pm_runtime_put_autosuspend(dev->dev); --=20 2.50.1 From nobody Sun Oct 5 17:57:52 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 197E4246787 for ; Thu, 31 Jul 2025 05:36:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940215; cv=none; b=fI1rTfjzdhK69WkLDzPPy1cRqq1RApnNfl0dceydpW9xUfHqV1O5GDej5CJamdQxDpyXzyhNtGSJJ8e4/np7vV7nfz9LcxNKZew0i80KT/+GBVl+eksJcCGvWWSJ+hmm/yMmCIB+OvJp7WbHeLHYVd8y9tYlfddRawALophzer4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753940215; c=relaxed/simple; bh=RR7lB52vap1BfZ4IteGmLPGPdbg07bAO0tj3IxKpSQg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nVDZzI+Awfzq9dP8ntYGPxz7CDd1MBh/tS/NMCsxBE7n57xOSryoe7n9tnVXaEBEymRgeNZpwktK4m8s/UpLCQ1jIwzETXP/LpR/944QhoE4x98YEFA9+I0sJ5Klw2M2sa3u6shaVfHMLFuGMA0qPxozv7KTtRmVl/yvtgIQwaM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K9MzeDCS; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K9MzeDCS" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3b794a013bcso621452f8f.2 for ; Wed, 30 Jul 2025 22:36:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753940212; x=1754545012; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=AMZpWfQTqvxub6EnV2WBq7DOhIOcnfoMYMkFRXtjCnQ=; b=K9MzeDCSbrknGWirOru3QfzIv59BSZySgayeyQy9+pivUeY0LBge1BfQkFH+7hmoe9 17hXQgGInFPoCSlyLZgpcOgwXf+e/C/8qcgqg8lIHYFY+75PPgCAhFGaW4e2aWxSymsQ wuz0As517oIW2DdX0Sgmc90XXdI0ZHVegYpCyAbzRXoi1laju/ETpgxVlh0pG1EZzVAb +YQsXGyzRoFU/6VG7pZQEvxynp/ttwvfuJZMw0vVxvaMOJLUu+PPfziTVgBUKJojmf9V IJ9yuEc9Jld4IRpFectdxR3jZQivSioeKt2Q9I/GfWBFEVwr59UOksN1LxkM2twJPLGS rscA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753940212; x=1754545012; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AMZpWfQTqvxub6EnV2WBq7DOhIOcnfoMYMkFRXtjCnQ=; b=MrGKrsBccRmYadZi3mnnGknZiGDD1tBLgxFDjkRPgJB2ikdSDDIvP6TUh9tsP6+Ty2 YKf/WY41ebTVMNiuwHBf/mTYIBRWUyOqP/QKNnyZ3HPvSn5HrJeatCkBcPC2oKx6GMek jEVvjF+F6PF7j7wJ96d/ZfaJ2dezPZrRIcZP8cLAKVUKOmxAf5EFsDNWU5DiQFoYbCM5 7JhWK6SDwkWIeAyekmA/0fi74dZQJYER/eKURwx2jOoDTkc/FCNRQ6Rx9GqPVFViq0XX Q2JyCnr9G8E5IYDQK89vfbc3mTMpSxubkTVN36nS2d3Y6c98rzvlVRysw492O3SDf2Pc VfsA== X-Forwarded-Encrypted: i=1; AJvYcCXcaxWyeqTvLFSDyjV/lnia/PTx/bqh0PlGIKeWSki2lQf3HORnAl7sralSGW2KNZvZMYE8HChUwfIfbj0=@vger.kernel.org X-Gm-Message-State: AOJu0YyRainFpoFy9DOJZVXn2DpLL3tl123rtB1wkwWO+fAlECCMTvGJ mb7TvmCH+opGapRKoQjx/ki7yIu9pRuk8Op5TDA/p09phycJSLuUcTol X-Gm-Gg: ASbGncuubI7OeZ8lhMRygEYGPQvaSvdElZq4oZ+KfvZVL7m/ZoX5b7230qlk4AR71s3 StQvAbWrXYQgU3j52Um7jIDYx7hvGtY1XBTusqPGk26cO5/kjScoJH0eclui/R9rGhBPYxfMMK9 iAJ7g/f36lTLGI3oCXA3r4KvLwVJpkmJfLJ5CTfH/HR9rUmDO1sQbgHZnDx7bbyWBq64uMYxi3D v42z4LGolHygwV9T417u16UGRNdlsvVEAdYkJuTthqz83zDYPq/nOP/0OXbfeh7XfEta/2lroMn vaC8w/MBbhPEguTLBE4V4/f/BDeY9Ktt2HdvC1u6DCaFp3QLQFU51kl/Y62N/LJPUvL56Yg4I/s aF5Ds3kPgtRFrs6XbtJoED3VnUwgd1pQip/s3MPaKsLDePpoRNPfH65vRt21Saxe2fVVCMuY= X-Google-Smtp-Source: AGHT+IHdfzXx9K06cb/UnitGjPmvC7D+NZDjqSkxgc5T7oHEjmuUebpFeyLmNYxu/axLoj3DiwsXzg== X-Received: by 2002:a05:6000:200e:b0:3b4:9721:2b31 with SMTP id ffacd0b85a97d-3b794fc2684mr4609111f8f.5.1753940212394; Wed, 30 Jul 2025 22:36:52 -0700 (PDT) Received: from [192.168.1.205] (dynamic-176-005-138-071.176.5.pool.telefonica.de. [176.5.138.71]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3b79c3ac093sm1149137f8f.9.2025.07.30.22.36.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Jul 2025 22:36:51 -0700 (PDT) From: Philipp Zabel Date: Thu, 31 Jul 2025 07:36:39 +0200 Subject: [PATCH RFC 6/6] drm/amdgpu: don't wake up the GPU for syncobj feature detection Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250731-b4-dont-wake-next-v1-6-e51bdc347fa3@gmail.com> References: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> In-Reply-To: <20250731-b4-dont-wake-next-v1-0-e51bdc347fa3@gmail.com> To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Philipp Zabel , Philipp Zabel X-Mailer: b4 0.15-dev-a9b2a Don't wake the GPU if the SYNCOBJ_CREATE/DESTROY/WAIT ioctls are used to detect syncobj features before the GPU is powered up. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/2295 Signed-off-by: Philipp Zabel --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index 79d31ac6a7b37..b12342e917193 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2981,6 +2981,14 @@ long amdgpu_drm_ioctl(struct file *filp, } } =20 + if (wake && unlikely(!fpriv->initialized)) { + /* Allow syncobj feature detection before GPU wakeup */ + if (cmd =3D=3D DRM_IOCTL_SYNCOBJ_CREATE || + cmd =3D=3D DRM_IOCTL_SYNCOBJ_DESTROY || + cmd =3D=3D DRM_IOCTL_SYNCOBJ_WAIT) + wake =3D false; + } + dev =3D file_priv->minor->dev; if (wake) { ret =3D pm_runtime_get_sync(dev->dev); --=20 2.50.1