Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756264AbcJGIOd (ORCPT ); Fri, 7 Oct 2016 04:14:33 -0400 Received: from mail-it0-f67.google.com ([209.85.214.67]:34318 "EHLO mail-it0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756243AbcJGIMu (ORCPT ); Fri, 7 Oct 2016 04:12:50 -0400 MIME-Version: 1.0 In-Reply-To: <1475768970-32512-1-git-send-email-ard.biesheuvel@linaro.org> References: <1475768970-32512-1-git-send-email-ard.biesheuvel@linaro.org> From: Alexandre Courbot Date: Fri, 7 Oct 2016 17:12:28 +0900 Message-ID: Subject: Re: [PATCH v5 0/3] drm/nouveau: set DMA mask before mapping scratch page To: Ard Biesheuvel Cc: Linux Kernel Mailing List , "nouveau@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , David Airlie , Ben Skeggs Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2141 Lines: 47 On Fri, Oct 7, 2016 at 12:49 AM, Ard Biesheuvel wrote: > This v4 is now a 3 piece series (since v4), after Alexandre pointed out that > both GF 100 and NV50 are affected by the same issue, and that a related issue > has been solved already for Tegra in commit 9d0394c6bed5 > ("drm/nouveau/instmem/gk20a: set DMA mask early"). > > The issue that this series addresses is the fact that the Nouveau driver > invokes the DMA API before setting the DMA mask. In both cases addressed > here, these are simply static bidirectional mappings of scratch pages whose > purpose is not well understood, and in most cases, it does not matter that > these pages are always allocated below 4 GB even if the hardware can access > memory much higher up. > > However, on platforms without any RAM below 4 GB, the preliminary DMA mask > of 32 is preventing the nouveau driver from loading on GF100 and NV50 > hardware with an error like the following one: > > nouveau 0000:02:00.0: enabling device (0000 -> 0003) > nouveau 0000:02:00.0: NVIDIA GT218 (0a8280b1) > nouveau 0000:02:00.0: bios: version 70.18.a6.00.00 > nouveau 0000:02:00.0: fb ctor failed, -14 > nouveau: probe of 0000:02:00.0 failed with error -14 > > So fix this by setting a preliminary DMA mask based on the MMU device 'dma_bits' > property (patch #1), and postpone mapping the scratch pages to the respective > FB .init() hooks. (#2 and #3) > > v5: move setting of preliminary DMA mask to nvkm_device_pci_new() (#1) > move allocation and DMA mapping of scratch pages to .oneinit hooks (#2, #3) > v4: split and move dma_set_mask to probe hook (Alexander) > v3: rework code to get rid of DMA_ERROR_CODE references, which is not > defined on all architectures > v2: replace incorrect comparison of dma_addr_t type var against NULL > > Ard Biesheuvel (3): > drm/nouveau: set streaming DMA mask early > drm/nouveau/fb/gf100: defer DMA mapping of scratch page to oneinit() > hook > drm/nouveau/fb/nv50: defer DMA mapping of scratch page to oneinit() > hook The series, Reviewed-by: Alexandre Courbot Thanks!