Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp297062pxf; Thu, 25 Mar 2021 04:29:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxMnk707kwHO/LZgCYrWxeoEa3DqvLvKMv0+ToGr0hdR1W3UTm1vWkHLN/TlDDLvR3cl2a1 X-Received: by 2002:a17:906:73cd:: with SMTP id n13mr8579073ejl.535.1616671773540; Thu, 25 Mar 2021 04:29:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616671773; cv=none; d=google.com; s=arc-20160816; b=xoZOK6Vm28qP43AsJ9LATmP04KcVQ7fFcBHfTcNkT8/nK2tscpB/yNsv1s/MCTZGEC BX70pD1Af4Tf+TLZy5Gl3jWZ/SexMH09Mh5HTjllVZTTtdi7zPiHpisn55CIQg+L5iw8 6kWlSbG3uWcnAVYK7gjo3v+pKvBn1Nr/VvfgVEgZxqk5daQQVsG+A+EjxcaSirT9Tu52 vlk6J6vdp9X+tEk2kHX7XKb4AmWR/dJ4gfwd2+f8whpmzPPDNhcXyGr2YDujE75Dl+mL ZqjR8enZlnCBdRzhas9oZWZGvNEQ7J3pvEtBKxFU6ImswMt7mq5wZqgqfvpLEoWwR3J/ 4qLw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QSqSksOz+mm5yjH986fmnxpSd1n5Jt4AI2Mw+sduM9Y=; b=aJ6TMZffMfzwC6Hnh8qV+xN4tIylqpxCOp/9LV35Ah03xR3gX6/eVUgzHPJ1fEjW+A HnVjkl3zVSg5KXxMJYGmyYrig4zgjzJaBUa/Qnlekbc3dOVZSs7nmEkGXZfYdhe/5vtx IEHAa/7ijvdm41HgN3rHl5Zz9jk8ccldndJGRVpEPsjO8ArznX/C/YqNach+iQn2tXMN s7nQLowCNcSTOyikU/Kj0OrD2BV9DTVPUpttP7j91KtvhcNeGE/CZcdhj7pNxvzIHuKT Q7sbczW9Nl/sZyhunCjdSyDnskx0g5vvVOPI+Xr6Oo5Mjy4WJ04+5GtMfxihPGKk4dKs HUhQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PdnRVF8Q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ec23si4283671ejb.710.2021.03.25.04.29.10; Thu, 25 Mar 2021 04:29:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PdnRVF8Q; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230334AbhCYL2k (ORCPT + 99 others); Thu, 25 Mar 2021 07:28:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:34206 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230347AbhCYLZv (ORCPT ); Thu, 25 Mar 2021 07:25:51 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6E05161A17; Thu, 25 Mar 2021 11:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616671550; bh=nrYPgSlh1MX6DNy97a1bWl/b0r03TbP9jp2zLQMAbqo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PdnRVF8QrSajy2xe38Bru4YlKhyhI1TyU3KJtFx+44WLhQEzZ/qV3jdtuCdfiOudY S5IJ50NpTXFB9ruwrPfwOSq7zE2vGwtao7AV0/o5KD4ZAxwvkaOTDJubxGSvKVp1yM D/1EA7G3Mm/3Ij29nRAwJROxDSH2Xn6y72S0nr7HVwak5C+C2pR12GjHhu1B/Yl8Ct V2+33uAtoR87JpKK3X5La9HGfbAImap0qB5P/EPTygrJiKYxQYwSk5lkktMvMWAgHH CBjTa0VCo5lPC7qMAh6B+YFLn6xGWm2nuM/8AAvBb+C3SUxApdH/4v+hiQKy8yisqq s6Hcn7nS1p3xg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Tobias Klausmann , Dave Airlie , Sasha Levin , dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.11 39/44] nouveau: Skip unvailable ttm page entries Date: Thu, 25 Mar 2021 07:24:54 -0400 Message-Id: <20210325112459.1926846-39-sashal@kernel.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210325112459.1926846-1-sashal@kernel.org> References: <20210325112459.1926846-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tobias Klausmann [ Upstream commit e94c55b8e0a0bbe9a026250cf31e2fa45957d776 ] Starting with commit f295c8cfec833c2707ff1512da10d65386dde7af ("drm/nouveau: fix dma syncing warning with debugging on.") the following oops occures: BUG: kernel NULL pointer dereference, address: 0000000000000000 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 6 PID: 1013 Comm: Xorg.bin Tainted: G E 5.11.0-desktop-rc0+ #2 Hardware name: Acer Aspire VN7-593G/Pluto_KLS, BIOS V1.11 08/01/2018 RIP: 0010:nouveau_bo_sync_for_device+0x40/0xb0 [nouveau] Call Trace: nouveau_bo_validate+0x5d/0x80 [nouveau] nouveau_gem_ioctl_pushbuf+0x662/0x1120 [nouveau] ? nouveau_gem_ioctl_new+0xf0/0xf0 [nouveau] drm_ioctl_kernel+0xa6/0xf0 [drm] drm_ioctl+0x1f4/0x3a0 [drm] ? nouveau_gem_ioctl_new+0xf0/0xf0 [nouveau] nouveau_drm_ioctl+0x50/0xa0 [nouveau] __x64_sys_ioctl+0x7e/0xb0 do_syscall_64+0x33/0x80 entry_SYSCALL_64_after_hwframe+0x44/0xae ---[ end trace ccfb1e7f4064374f ]--- RIP: 0010:nouveau_bo_sync_for_device+0x40/0xb0 [nouveau] The underlying problem is not introduced by the commit, yet it uncovered the underlying issue. The cited commit relies on valid pages. This is not given for due to some bugs. For now, just warn and work around the issue by just ignoring the bad ttm objects. Below is some debug info gathered while debugging this issue: nouveau 0000:01:00.0: DRM: ttm_dma->num_pages: 2048 nouveau 0000:01:00.0: DRM: ttm_dma->pages is NULL nouveau 0000:01:00.0: DRM: ttm_dma: 00000000e96058e7 nouveau 0000:01:00.0: DRM: ttm_dma->page_flags: nouveau 0000:01:00.0: DRM: ttm_dma: Populated: 1 nouveau 0000:01:00.0: DRM: ttm_dma: No Retry: 0 nouveau 0000:01:00.0: DRM: ttm_dma: SG: 256 nouveau 0000:01:00.0: DRM: ttm_dma: Zero Alloc: 0 nouveau 0000:01:00.0: DRM: ttm_dma: Swapped: 0 Signed-off-by: Tobias Klausmann Signed-off-by: Dave Airlie Link: https://patchwork.freedesktop.org/patch/msgid/20210313222159.3346-1-tobias.klausmann@freenet.de Signed-off-by: Sasha Levin --- drivers/gpu/drm/nouveau/nouveau_bo.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index f1c9a22083be..e05565f284dc 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -551,6 +551,10 @@ nouveau_bo_sync_for_device(struct nouveau_bo *nvbo) if (!ttm_dma) return; + if (!ttm_dma->pages) { + NV_DEBUG(drm, "ttm_dma 0x%p: pages NULL\n", ttm_dma); + return; + } /* Don't waste time looping if the object is coherent */ if (nvbo->force_coherent) @@ -583,6 +587,10 @@ nouveau_bo_sync_for_cpu(struct nouveau_bo *nvbo) if (!ttm_dma) return; + if (!ttm_dma->pages) { + NV_DEBUG(drm, "ttm_dma 0x%p: pages NULL\n", ttm_dma); + return; + } /* Don't waste time looping if the object is coherent */ if (nvbo->force_coherent) -- 2.30.1