From patchwork Thu Dec 14 00:43:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lyude Paul X-Patchwork-Id: 178386 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:3b04:b0:fb:cd0c:d3e with SMTP id c4csp8218970dys; Wed, 13 Dec 2023 16:44:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IGuoKZrE+dGiqCYUkjM7KianY5iYimJnZ3ArBGvLf/i6ub4v31BhoRr/be9kbdRjN0EG+O6 X-Received: by 2002:a05:6a00:9398:b0:6cd:dece:b73d with SMTP id ka24-20020a056a00939800b006cddeceb73dmr5457528pfb.18.1702514651746; Wed, 13 Dec 2023 16:44:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702514651; cv=none; d=google.com; s=arc-20160816; b=L+4a6bVg2FdeaSpB0DCg/S4t9UfBH/Est6dI7IksTuh3JNknqbP7/wBCzfxQ6NTDzb e+SHnmuYBWI4/iw+nOZsHuSMeT58GherocC6YOp1ohSntVua5T5D9OofrrpTlnkD0Neq lqSdtfYQT0fIE3MWomZmdujp2L7p+ExxqZKbghSYSfpt35HzryQEIfWH0vROw5vVlW4L S6GPPzOJwUL8m2h4lbw5Wuy/1/15jHj2b4FyA00N/wM1RRBQcbFQX5B2aSqOwN7Y0tco NpmMOZBIMT/eETer3zTYLFVViN4u8Ps86N9Gj2zoOJqGSUAcY6DECkD5xMkWW01Yzvzj j+Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ii5VSQ2/GUc2f4RzgYEeamHIhipYsVSJSGoA0nxmpuk=; fh=9+KDVmhnzgqJWwIZjQqfZa3is7x6gIhjOO587alaSTc=; b=C4QUdaLqSUJ84Rjivb6oD0sXoX8okeJ5tvuOdp7JqtryEDVUVCSM5ymrivoyZPtmsK z0lTE5VuXyUQv5FLgCuICwSG92bOii7h6lSJbBCfJH95gHsQQ654xkjFB4GyELuO1VSa 2t3Q0p6g3VmaANK1hLSRSxTR6+IcE59CGCREGu+IMC+BFC2qunOOYdfZDNO0RXX3NN+1 mN6ur7MxM4GnDu01iG2iXnHGFgLBfzeH0UptkCAnrlNSXxbSUYoPVrO2YBLb5s2DE+6e dScZYLQz/GpwvWj09fSchvlBM82y0+/pQjozKKCGsdbmkOgWre1HulFoe1iqQRFl795e 6UQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=i36+cYiw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id l68-20020a632547000000b005c6634fa849si10342110pgl.89.2023.12.13.16.44.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Dec 2023 16:44:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=i36+cYiw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id D764780275A5; Wed, 13 Dec 2023 16:44:08 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442805AbjLNAoA (ORCPT + 99 others); Wed, 13 Dec 2023 19:44:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229739AbjLNAn7 (ORCPT ); Wed, 13 Dec 2023 19:43:59 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5922AC for ; Wed, 13 Dec 2023 16:44:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1702514645; 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; bh=ii5VSQ2/GUc2f4RzgYEeamHIhipYsVSJSGoA0nxmpuk=; b=i36+cYiwZ9FyH9gm784PGyMVuwb5fpJgqizLzVB6oYSjdmU/SmXkf3Tv0boXgWnBYYXRSw mXb2bMQcXYJppckskMTjb6/gtAJGkgaCdyc9i5rsTwXBw0rXQM3DhHhCumgjWeCTchdBeI I7NwJxfcJMCvUiTFG+dVLslTQ8jxaZ0= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-187-SeqMwaiINUeZe-0k0ms05A-1; Wed, 13 Dec 2023 19:44:03 -0500 X-MC-Unique: SeqMwaiINUeZe-0k0ms05A-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4D50E88CC40; Thu, 14 Dec 2023 00:44:03 +0000 (UTC) Received: from emerald.lyude.net (unknown [10.22.8.118]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3EB49492BE6; Thu, 14 Dec 2023 00:44:02 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Cc: Borislav Petkov , Karol Herbst , Danilo Krummrich , David Airlie , Daniel Vetter , Ben Skeggs , linux-kernel@vger.kernel.org (open list) Subject: [PATCH] drm/nouveau/kms/nv50-: Don't allow inheritance of headless iors Date: Wed, 13 Dec 2023 19:43:57 -0500 Message-ID: <20231214004359.1028109-1-lyude@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Wed, 13 Dec 2023 16:44:09 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785216003487869793 X-GMAIL-MSGID: 1785216003487869793 Turns out we made a silly mistake when coming up with OR inheritance on nouveau. On pre-DCB 4.1, iors are statically routed to output paths via the DCB. On later generations iors are only routed to an output path if they're actually being used. Unfortunately, it appears with NVIF_OUTP_INHERIT_V0 we make the mistake of assuming the later is true on all generations, which is currently leading us to return bogus ior -> head assignments through nvif, which causes WARN_ON(). So - fix this by verifying that we actually know that there's a head assigned to an ior before allowing it to be inherited through nvif. This -should- hopefully fix the WARN_ON on GT218 reported by Borislav. Signed-off-by: Lyude Paul Cc: Borislav Petkov Reported-by: Borislav Petkov (AMD) Tested-by: Borislav Petkov (AMD) --- drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c index e4279f1772a1b..377d0e0cef848 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c @@ -385,7 +385,7 @@ nvkm_uoutp_mthd_inherit(struct nvkm_outp *outp, void *argv, u32 argc) /* Ensure an ior is hooked up to this outp already */ ior = outp->func->inherit(outp); - if (!ior) + if (!ior || !ior->arm.head) return -ENODEV; /* With iors, there will be a separate output path for each type of connector - and all of