From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 6D5D53C457D for ; Mon, 29 Jun 2026 22:44:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782773096; cv=none; b=f6HmknLYSLoT/T3upezj1q+UBPVL/C+JyQJNBt75gsRC/lnkceXkmWapmTrn00wkDkCVoL6vblAIufAGo3ktmeRbzie/LmcObZ54dUrUUipT/fhhA0RZpw0bzSpt1guIKA8sw1ZEqUFM1LffJnOZjEQNBhKRG8vHdiyv0hCUqhE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782773096; c=relaxed/simple; bh=T4iQ48UIz6BTuPPw30b0yfQHI3incJ6DiOOONbPQt9A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VExYvldtv9dqH8TI3OrBIjfYpNpgR84R+J4lBn7G6MKOXse0EuWajG7W2KrYcoLEAslwFIWbE3QTZxJYabUovpol4aSy6lEmHhQhtuhUVMVihvfbyamqJ0fqxXQITpOJ0JK4e4qOk8vbz2DPP5sPfuHttyanRf7Nu90D9+pPKvE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=M4z70CP4; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="M4z70CP4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1782773094; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=p+UkYCYkCp20WVOEdzEgkpb9VOvQcbeVE69sH5B4ycg=; b=M4z70CP4IEdsFepVbRo5ynHZsePG1cOZTiVbSeDm29+lqaEDKaV1lndf/qXw41mig4cxIm xSrHf5V9Om6ypHLHUlUupHMUOBTQE/CGYJDvdd9wwtRXjuGc/AxEsb8RekpOXW7wSxzXjQ O3p3ihUw5STn1gwOVPlyBBo5wmTUf28= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-Ig9b9bhAOTy5PGWJW_bNEg-1; Mon, 29 Jun 2026 18:44:50 -0400 X-MC-Unique: Ig9b9bhAOTy5PGWJW_bNEg-1 X-Mimecast-MFC-AGG-ID: Ig9b9bhAOTy5PGWJW_bNEg_1782773089 Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id ABAE619344BA; Mon, 29 Jun 2026 22:44:48 +0000 (UTC) Received: from GoldenWind.lan (unknown [10.22.88.59]) by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 202DB3691A; Mon, 29 Jun 2026 22:44:46 +0000 (UTC) From: Lyude Paul To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, "Timur Tabi" , "Dave Airlie" , "Andy Shevchenko" , "Maarten Lankhorst" , "Ben Skeggs" , "Kees Cook" , "Simona Vetter" , "David Airlie" , "Thomas Zimmermann" , "Maxime Ripard" , "Mel Henning" , "Danilo Krummrich" , "Lyude Paul" Subject: [PATCH v2 4/4] drm/nouveau/gsp/r570: Add missing state flags to GSP resume arguments Date: Mon, 29 Jun 2026 18:42:36 -0400 Message-ID: <20260629224350.2870201-5-lyude@redhat.com> In-Reply-To: <20260629224350.2870201-1-lyude@redhat.com> References: <20260629224350.2870201-1-lyude@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95 When resuming the GPU, we need to let GSP know that we need it to avoid destructive state transitions when bringing the GPU back up. Otherwise, we will end up with a plethora of strange behavior after coming out of resume - such as push buffers randomly timing out. Signed-off-by: Lyude Paul Fixes: 53dac0623853 ("drm/nouveau/gsp: add support for 570.144") Cc: # v6.16+ --- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 3 ++- .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c index 00158697bd77a..b7f396897e56c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c @@ -198,7 +198,8 @@ r570_gsp_set_rmargs(struct nvkm_gsp *gsp, bool resume) args->srInitArguments.bInPMTransition = 0; } else { args->srInitArguments.oldLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_4; - args->srInitArguments.flags = 0; + args->srInitArguments.flags = + GPU_STATE_FLAGS_PRESERVING | GPU_STATE_FLAGS_PM_TRANSITION; args->srInitArguments.bInPMTransition = 1; } diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h index 1904305b69624..aa6c19965e0b4 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h @@ -523,6 +523,14 @@ typedef struct #define NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_4 (0x00000004U) +#define GPU_STATE_FLAGS_PRESERVING BIT(0) // GPU state is preserved +#define GPU_STATE_FLAGS_VGA_TRANSITION BIT(1) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_TRANSITION BIT(2) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_SUSPEND BIT(3) +#define GPU_STATE_FLAGS_PM_HIBERNATE BIT(4) +#define GPU_STATE_FLAGS_GC6_TRANSITION BIT(5) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_FAST_UNLOAD BIT(6) // Used during windows restart, skips stateDestroy steps + typedef struct { // Magic for verification by secure ucode -- 2.54.0 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 CF946C43458 for ; Mon, 29 Jun 2026 22:45:00 +0000 (UTC) Received: from kara.freedesktop.org (unknown [131.252.210.166]) by gabe.freedesktop.org (Postfix) with ESMTPS id 81C8310EA97; Mon, 29 Jun 2026 22:45:00 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.b="LNRrlnBD"; dkim-atps=neutral Received: from kara.freedesktop.org (localhost [127.0.0.1]) by kara.freedesktop.org (Postfix) with ESMTP id D4E9D46DAA; Mon, 29 Jun 2026 22:30:19 +0000 (UTC) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=lists.freedesktop.org; s=20240201; t=1782772219; b=Koa3+SyG/zOfj7nx7+O6z243/xxPekXyhUCOlZoCsq49sYdtKuRkzGxEhQFuYCYKSiEX1 YhuGrdI1kqRFwvcmws2d7r/qPlxgianAIC5eyjemLQCXCgD9t9HkK6VHgBtUvs5dZZyDvVQ TU7Zgbs9ZsDEQv+o07Fi+U33JFANK5aokoEFzW4d05LDKHDmQ8OdJwMrae8oVFBMqkZuyMp qvHulA5bDSNWt1GOP800cauXJG5SHBKgnuqFoh19nbspD2mPcbN5NGBxZb5O0WZJhjZwRCj JVaucfofBYf/y37SIL2e8W70GqMSpXo+Hgc76hbTyT0tBofYHZcDwm4TUgOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.freedesktop.org; s=20240201; t=1782772219; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=p+UkYCYkCp20WVOEdzEgkpb9VOvQcbeVE69sH5B4ycg=; b=hKSv9HN4rwNXivG5031IrC+FMaEc5Q3+FKnstmqGs7y8RdVLFOc4CIInE3+k7V0LgbQTA Hw6hu1tDcrGPEhW5ZobwmwVkXXIfLuwDc0TJ3hRXdgGNYRbje9yoLRD/MxFslmCqZkOnOua 78rXwKhyGHLMee1wkFefXh0WLZVsQKVhqdlKHtIQq9z/II9AUR+FCRc+N1Kn5MgQPz/wTd3 rcZ5Wwqp6HmrNtpHvYyB7obZQeqH6BWEnCOFzEPbyZrOKulB8zM4nmjDpS5TtiEGTnqDr8V XQJ2qB9T4omjz1JCWfsvgd5jIpiztPIsaZT4DJ7VGeKvDc+fJgey1l/Eu5aw== ARC-Authentication-Results: i=1; mail.freedesktop.org; dkim=pass header.d=redhat.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=redhat.com policy.dmarc=quarantine Authentication-Results: mail.freedesktop.org; dkim=pass header.d=redhat.com; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=redhat.com policy.dmarc=quarantine Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by kara.freedesktop.org (Postfix) with ESMTPS id 05AC046D51 for ; Mon, 29 Jun 2026 22:30:18 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6807010EA74 for ; Mon, 29 Jun 2026 22:44:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1782773096; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=p+UkYCYkCp20WVOEdzEgkpb9VOvQcbeVE69sH5B4ycg=; b=LNRrlnBDTDVvPxyITdRGUnWhSlQ9lIWmkqR8ngIUm5ASATZNSSfp2/NFij4/2WBQ+0RKs5 F8Db6zyA1VxBOE6kG6Ppp/ZyELgq7rwTcmHJO/dC4DDtSnu0klK6lCozLnHEu3l4VfNm5O 5nDGMJOO5oxFOYueEKkyD9Z2XW6e37I= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-677-Ig9b9bhAOTy5PGWJW_bNEg-1; Mon, 29 Jun 2026 18:44:50 -0400 X-MC-Unique: Ig9b9bhAOTy5PGWJW_bNEg-1 X-Mimecast-MFC-AGG-ID: Ig9b9bhAOTy5PGWJW_bNEg_1782773089 Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id ABAE619344BA; Mon, 29 Jun 2026 22:44:48 +0000 (UTC) Received: from GoldenWind.lan (unknown [10.22.88.59]) by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 202DB3691A; Mon, 29 Jun 2026 22:44:46 +0000 (UTC) From: Lyude Paul To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/4] drm/nouveau/gsp/r570: Add missing state flags to GSP resume arguments Date: Mon, 29 Jun 2026 18:42:36 -0400 Message-ID: <20260629224350.2870201-5-lyude@redhat.com> In-Reply-To: <20260629224350.2870201-1-lyude@redhat.com> References: <20260629224350.2870201-1-lyude@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95 X-Mimecast-MFC-PROC-ID: gHZ0sWpFdA93NvnEYSqxFbVjBw_PjxxKYZmKg5aLn8Y_1782773089 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true Message-ID-Hash: AGNYTF2OJJVZORW7WXGYCXLFRGUBLN6U X-Message-ID-Hash: AGNYTF2OJJVZORW7WXGYCXLFRGUBLN6U X-MailFrom: lyude@redhat.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: stable@vger.kernel.org, Dave Airlie , Andy Shevchenko , Maarten Lankhorst , Ben Skeggs , Kees Cook , Simona Vetter , Maxime Ripard , Danilo Krummrich X-Mailman-Version: 3.3.8 Precedence: list List-Id: Nouveau development list Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: When resuming the GPU, we need to let GSP know that we need it to avoid destructive state transitions when bringing the GPU back up. Otherwise, we will end up with a plethora of strange behavior after coming out of resume - such as push buffers randomly timing out. Signed-off-by: Lyude Paul Fixes: 53dac0623853 ("drm/nouveau/gsp: add support for 570.144") Cc: # v6.16+ --- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 3 ++- .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c index 00158697bd77a..b7f396897e56c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c @@ -198,7 +198,8 @@ r570_gsp_set_rmargs(struct nvkm_gsp *gsp, bool resume) args->srInitArguments.bInPMTransition = 0; } else { args->srInitArguments.oldLevel = NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_4; - args->srInitArguments.flags = 0; + args->srInitArguments.flags = + GPU_STATE_FLAGS_PRESERVING | GPU_STATE_FLAGS_PM_TRANSITION; args->srInitArguments.bInPMTransition = 1; } diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h index 1904305b69624..aa6c19965e0b4 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h @@ -523,6 +523,14 @@ typedef struct #define NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_4 (0x00000004U) +#define GPU_STATE_FLAGS_PRESERVING BIT(0) // GPU state is preserved +#define GPU_STATE_FLAGS_VGA_TRANSITION BIT(1) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_TRANSITION BIT(2) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_SUSPEND BIT(3) +#define GPU_STATE_FLAGS_PM_HIBERNATE BIT(4) +#define GPU_STATE_FLAGS_GC6_TRANSITION BIT(5) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_FAST_UNLOAD BIT(6) // Used during windows restart, skips stateDestroy steps + typedef struct { // Magic for verification by secure ucode -- 2.54.0