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 187DBE83056 for ; Tue, 3 Feb 2026 05:24:50 +0000 (UTC) Received: from kara.freedesktop.org (unknown [131.252.210.166]) by gabe.freedesktop.org (Postfix) with ESMTPS id A9D9510E53D; Tue, 3 Feb 2026 05:24:49 +0000 (UTC) Received: from kara.freedesktop.org (localhost [127.0.0.1]) by kara.freedesktop.org (Postfix) with ESMTP id D119B41B48; Tue, 3 Feb 2026 05:15:34 +0000 (UTC) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=lists.freedesktop.org; s=20240201; t=1770095734; b=SRjQHRIiQfM95gR6/90/E6/v8v6yiM7SEU7jA5wdAoTGQIfFgmoJJeQv9i7UWYI9GtOuG ILHDmnAFxNrgdjjBX9coHdyrVIgdgMtdfjHweUFB3lYSbhTT5H4Il7r1uEjkbi1J+potrCs A771ebdphadxI0mxJB2dKDPF9KEf6UgByRdAXZ10+rWgBaxwiNme4L3b2UOELqF0f2c2j9Y GYdDdAnPy8S8e5JocBO4ym4t72E9RekYUs89huxuZlMbS/PnEsGYrK9JlKl6WMKZr3ppCfJ SkjPOJW1syLEcY+rsk5DbAgQPDQ/3qqEqO/nXHS6YrI/4fAUQsS0UR7g4HhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.freedesktop.org; s=20240201; t=1770095734; 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=ItB5VXgKKdTlLov4NYba9s/LOrby/utwGk8pau0PbTM=; b=JyVXkxp5KgvsCPDoFmSlR19HLPLeEJ6o6lUagVBCSTjsYR1sR6/QJ3dDsOu7MZE/sQomM 6Ut19NGCEh4yCZdweh2/oq4I6W+4SLDHR6S8IQTt6AekA3DZboYnIGZZI+U83IwC8Iq/Hjk n4kRDlFaQ81T/ox/Kemo43azm9MtUYRuC1eHhDqpfGYo5FREO34Zg1NYWj0Jc87j36KcwwC SSuq/6+iQptdxhhbeSKduGoR4cehKPNHyuLt6YvIcPi+FG8pxJhTK72EtlTtllDfb20prHP rUXU+8Pwowli9+SAfUcE7x882w+0He24+yECbmgwsu9to+qkTm6i3rxFfODA== ARC-Authentication-Results: i=1; mail.freedesktop.org; dkim=fail; arc=none (Message is not ARC signed); dmarc=fail (Used From Domain Record) header.from=gmail.com policy.dmarc=quarantine Authentication-Results: mail.freedesktop.org; dkim=fail; arc=none (Message is not ARC signed); dmarc=fail (Used From Domain Record) header.from=gmail.com policy.dmarc=quarantine Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by kara.freedesktop.org (Postfix) with ESMTPS id E9BD940B86 for ; Tue, 3 Feb 2026 05:15:31 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1AAF910E525 for ; Tue, 3 Feb 2026 05:24:46 +0000 (UTC) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-142-Hr2QNWtgNaqZMQuvqjmeug-1; Tue, 03 Feb 2026 00:24:42 -0500 X-MC-Unique: Hr2QNWtgNaqZMQuvqjmeug-1 X-Mimecast-MFC-AGG-ID: Hr2QNWtgNaqZMQuvqjmeug_1770096281 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0F98318005A7; Tue, 3 Feb 2026 05:24:41 +0000 (UTC) Received: from dreadlord.redhat.com (unknown [10.67.32.75]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 11A9C1800665; Tue, 3 Feb 2026 05:24:38 +0000 (UTC) From: Dave Airlie To: dri-devel@lists.freedesktop.org Subject: [PATCH 1/3] nouveau/gsp: use rpc sequence numbers properly. Date: Tue, 3 Feb 2026 15:21:11 +1000 Message-ID: <20260203052431.2219998-2-airlied@gmail.com> In-Reply-To: <20260203052431.2219998-1-airlied@gmail.com> References: <20260203052431.2219998-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: m8lG2fExzhWaZGpPKG_ivmS1GmdMLzwlOPrXaXCHAbo_1770096281 X-Mimecast-Originator: gmail.com Content-Transfer-Encoding: quoted-printable content-type: text/plain; charset=WINDOWS-1252; x-default=true Message-ID-Hash: M5AJ2I4R5S3ADC664XE2VECKKM5OW2ZE X-Message-ID-Hash: M5AJ2I4R5S3ADC664XE2VECKKM5OW2ZE X-MailFrom: airlied@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: nouveau@lists.freedesktop.org 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: From: Dave Airlie There are two layers of sequence numbers, one at the msg level and one at the rpc level. 570 firmware started asserting on the sequence numbers being in the right order, and we would see nocat records with asserts in them. Add the rpc level sequence number support. Fixes: 53dac0623853 ("drm/nouveau/gsp: add support for 570.144") Cc: Signed-off-by: Dave Airlie --- drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 6 ++++++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 4 ++-- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c | 6 ++++++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h b/drivers/gp= u/drm/nouveau/include/nvkm/subdev/gsp.h index b8b97e10ae83..64fed208e4cf 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h @@ -44,6 +44,9 @@ typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event= *, void *repv, u32 rep * NVKM_GSP_RPC_REPLY_NOWAIT - If specified, immediately return to the * caller after the GSP RPC command is issued. * + * NVKM_GSP_RPC_REPLY_NOSEQ - If specified, exactly like NOWAIT + * but don't emit RPC sequence number. + * * NVKM_GSP_RPC_REPLY_RECV - If specified, wait and receive the entire GSP * RPC message after the GSP RPC command is issued. * @@ -53,6 +56,7 @@ typedef void (*nvkm_gsp_event_func)(struct nvkm_gsp_event= *, void *repv, u32 rep */ enum nvkm_gsp_rpc_reply_policy { =09NVKM_GSP_RPC_REPLY_NOWAIT =3D 0, +=09NVKM_GSP_RPC_REPLY_NOSEQ, =09NVKM_GSP_RPC_REPLY_RECV, =09NVKM_GSP_RPC_REPLY_POLL, }; @@ -242,6 +246,8 @@ struct nvkm_gsp { =09/* The size of the registry RPC */ =09size_t registry_rpc_size; =20 +=09u32 rpc_seq; + #ifdef CONFIG_DEBUG_FS =09/* =09 * Logging buffers in debugfs. The wrapper objects need to remain diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c b/driver= s/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c index 2a7e80c6d70f..6e7af2f737b7 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c @@ -704,7 +704,7 @@ r535_gsp_rpc_set_registry(struct nvkm_gsp *gsp) =20 =09build_registry(gsp, rpc); =20 -=09return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_NOWAIT); +=09return nvkm_gsp_rpc_wr(gsp, rpc, NVKM_GSP_RPC_REPLY_NOSEQ); =20 fail: =09clean_registry(gsp); @@ -921,7 +921,7 @@ r535_gsp_set_system_info(struct nvkm_gsp *gsp) =09info->pciConfigMirrorSize =3D device->pci->func->cfg.size; =09r535_gsp_acpi_info(gsp, &info->acpiMethodData); =20 -=09return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOWAIT); +=09return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOSEQ); } =20 static int diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c b/driver= s/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c index 0dc4782df8c0..3ca3de8f4340 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c @@ -557,6 +557,7 @@ r535_gsp_rpc_handle_reply(struct nvkm_gsp *gsp, u32 fn, =20 =09switch (policy) { =09case NVKM_GSP_RPC_REPLY_NOWAIT: +=09case NVKM_GSP_RPC_REPLY_NOSEQ: =09=09break; =09case NVKM_GSP_RPC_REPLY_RECV: =09=09reply =3D r535_gsp_msg_recv(gsp, fn, gsp_rpc_len); @@ -588,6 +589,11 @@ r535_gsp_rpc_send(struct nvkm_gsp *gsp, void *payload, =09=09=09 rpc->data, rpc->length - sizeof(*rpc), true); =09} =20 +=09if (policy =3D=3D NVKM_GSP_RPC_REPLY_NOSEQ) +=09=09rpc->sequence =3D 0; +=09else +=09=09rpc->sequence =3D gsp->rpc_seq++; + =09ret =3D r535_gsp_cmdq_push(gsp, rpc); =09if (ret) =09=09return ERR_PTR(ret); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c b/driver= s/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c index 9d2fa4e66d59..996941c668ba 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 @@ -176,7 +176,7 @@ r570_gsp_set_system_info(struct nvkm_gsp *gsp) =09info->bIsPrimary =3D video_is_primary_device(device->dev); =09info->bPreserveVideoMemoryAllocations =3D false; =20 -=09return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOWAIT); +=09return nvkm_gsp_rpc_wr(gsp, info, NVKM_GSP_RPC_REPLY_NOSEQ); } =20 static void --=20 2.52.0