From patchwork Mon Sep 16 14:36:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 11147165 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0B9C876 for ; Mon, 16 Sep 2019 14:36:17 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E510B2184D for ; Mon, 16 Sep 2019 14:36:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E510B2184D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4F13A6E9A4; Mon, 16 Sep 2019 14:36:14 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1064F6E9A4; Mon, 16 Sep 2019 14:36:12 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id c4so312810edl.0; Mon, 16 Sep 2019 07:36:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qgjBNJZO9oVOXycGs4KaN9N5oGLDclPQLzdzyg38Kgs=; b=tcI636BW8SFLpu1PjbrAplIWbIkkwAmKsLrYOGCizaY56/orGU2z0SS1cuSssZ/fGz uET9mv/7OsG4+xTAhOh/Nt6tyiyi5pcwR9NEQgJeMk+MphO+CP6bSyartCMd7grBrqjk xvdB6B3fj47t3mBWDDm0o1K9SEsXLFEfmJgH0Yw/kC2rrH7WK4PjWiRiU+ZAgsITqj7e kdu8qbNTUIxq6kGHmUUaGl7my5D4z9CeY79ugeU9P/FDr+mc3FxkbhAetBgOdjjY6f9K xka5eR/USCv43SXHg+y3krz69fLGaLez4xRt6rY1prBg+378skXGcKjQ9sHHk6/vOwl8 RBSQ== X-Gm-Message-State: APjAAAUrRuTeTRnMElxw4D0TXWzWoCBcEAR7kgkoik0acYdtlPEF0VQB sKJTZILszkrToX8YgymHmvhO3k/R X-Google-Smtp-Source: APXvYqxZKSTHS5xUaf2NYCTyizrADVRSTgL4u+k4Bss5uRdj982100Gv3VhswrsRjHA1Y0gtlISSLw== X-Received: by 2002:a50:e614:: with SMTP id y20mr41519729edm.276.1568644570593; Mon, 16 Sep 2019 07:36:10 -0700 (PDT) Received: from localhost (p2E5BE2CE.dip0.t-ipconnect.de. [46.91.226.206]) by smtp.gmail.com with ESMTPSA id r18sm7244562edl.6.2019.09.16.07.36.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2019 07:36:09 -0700 (PDT) From: Thierry Reding To: Ben Skeggs Subject: [PATCH 1/2] drm/nouveau: tegra: Fix NULL pointer dereference Date: Mon, 16 Sep 2019 16:36:05 +0200 Message-Id: <20190916143606.9272-2-thierry.reding@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190916143606.9272-1-thierry.reding@gmail.com> References: <20190916143606.9272-1-thierry.reding@gmail.com> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qgjBNJZO9oVOXycGs4KaN9N5oGLDclPQLzdzyg38Kgs=; b=VbBQy7pHrugrnHif+/4StsOWeGIx6KLjSxCMjmVwjnLn44safb3eOAmTT3c44nY66h JrQHSyfffnfBjrNBEs1+5tMGO0aVI5qNSiSyvpeMNjY7p8EOykYILLrLU7yCqtb1lJ0A XpiubgkUZYDIdqdPoQRYdt2pdPxL49FpdejuVkzLnnYWcHJVyWOytV3XGfTsnXUuFQHL yX8Q2UiBIscCID6EQ9bMEvw3tKP3X1zPYGBd938XR75km9HHA++0G3MaO6WBcbypU7f5 RooMsZm3p752WVXQmdA0EkfHfmi/U+NhbaNeBIcw1SCuvdl5UsI3XH3eZSz+uVxSWKhh UBeQ== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Karol Herbst Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Thierry Reding Fill in BAR2 callbacks for instance memory. There's no BAR2 on Tegra GPUs, but buffers are all in system memory anyway, so just return the plain address. Signed-off-by: Thierry Reding --- .../drm/nouveau/nvkm/subdev/instmem/gk20a.c | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c index 985f2990ab0d..b0493f8df1fe 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.c @@ -261,6 +261,34 @@ gk20a_instobj_release_iommu(struct nvkm_memory *memory) nvkm_ltc_invalidate(ltc); } +static u64 +gk20a_instobj_bar2_dma(struct nvkm_memory *memory) +{ + struct gk20a_instobj_dma *iobj = gk20a_instobj_dma(memory); + u64 addr = ~0ULL; + + if (gk20a_instobj_acquire_dma(&iobj->base.memory)) + addr = gk20a_instobj_addr(&iobj->base.memory); + + gk20a_instobj_release_dma(&iobj->base.memory); + + return addr; +} + +static u64 +gk20a_instobj_bar2_iommu(struct nvkm_memory *memory) +{ + struct gk20a_instobj_iommu *iobj = gk20a_instobj_iommu(memory); + u64 addr = ~0ULL; + + if (gk20a_instobj_acquire_iommu(&iobj->base.memory)) + addr = gk20a_instobj_addr(&iobj->base.memory); + + gk20a_instobj_release_iommu(&iobj->base.memory); + + return addr; +} + static u32 gk20a_instobj_rd32(struct nvkm_memory *memory, u64 offset) { @@ -353,6 +381,7 @@ static const struct nvkm_memory_func gk20a_instobj_func_dma = { .dtor = gk20a_instobj_dtor_dma, .target = gk20a_instobj_target, + .bar2 = gk20a_instobj_bar2_dma, .page = gk20a_instobj_page, .addr = gk20a_instobj_addr, .size = gk20a_instobj_size, @@ -365,6 +394,7 @@ static const struct nvkm_memory_func gk20a_instobj_func_iommu = { .dtor = gk20a_instobj_dtor_iommu, .target = gk20a_instobj_target, + .bar2 = gk20a_instobj_bar2_iommu, .page = gk20a_instobj_page, .addr = gk20a_instobj_addr, .size = gk20a_instobj_size, From patchwork Mon Sep 16 14:36:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 11147167 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E6BBB76 for ; Mon, 16 Sep 2019 14:36:18 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id CFA632067D for ; Mon, 16 Sep 2019 14:36:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CFA632067D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1AEBB6E9A6; Mon, 16 Sep 2019 14:36:17 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80FEA6E9A6; Mon, 16 Sep 2019 14:36:14 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id v8so300264eds.2; Mon, 16 Sep 2019 07:36:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X/XOpyZsqG/KWvoSisq6x7AhYat6zso8yO/F5thGj3A=; b=JunkIdTL0ntW+PvrpuhjSSirdF+t64rItH1TyGfEGw3asr63eW2r91Y9JIkRNE/S1w xlG+g7qxnmNVKldIRPJdjPvCX7puwBV2nq0uED2ZCpxEPW8bP4hBmtR2QMN2efaUUD5+ q1fEP2MEdKlUow6vRG+5Yc7Uc4BRTZqZCiIxBW1rub0G45G0kB6MffwnDMpZq7XJqdEC RTmrLJ3NDhmZZEijXhQ28pnv1bLWdzrTKMqJHYSWgpSSPxQWPhWtB66LP1k0W7eTE6of 9GMysTZW41VZWXdT+oki/HbfZaCo12175UjGQqin4yA3LG9WVYW4LoIQS2pyIRuNYquV KUNQ== X-Gm-Message-State: APjAAAUr/5q72VkWhNKRqTqL0mdUzfM20nnZUGfYGSnTK9LxI+GY9Np2 eL9B/M0jbgIlXPlC12xNmXU= X-Google-Smtp-Source: APXvYqxUuo0DnT0WDNf/Y67WlQLYaDE7fGN/I7qg0UzjY6EURIgTiBIlvXaGeUsiTKmWGfphrjdZNg== X-Received: by 2002:a50:a666:: with SMTP id d93mr17725991edc.217.1568644572638; Mon, 16 Sep 2019 07:36:12 -0700 (PDT) Received: from localhost (p2E5BE2CE.dip0.t-ipconnect.de. [46.91.226.206]) by smtp.gmail.com with ESMTPSA id b36sm7182475edc.53.2019.09.16.07.36.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2019 07:36:11 -0700 (PDT) From: Thierry Reding To: Ben Skeggs Subject: [PATCH 2/2] drm/nouveau: tegra: Do not try to disable PCI device Date: Mon, 16 Sep 2019 16:36:06 +0200 Message-Id: <20190916143606.9272-3-thierry.reding@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190916143606.9272-1-thierry.reding@gmail.com> References: <20190916143606.9272-1-thierry.reding@gmail.com> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X/XOpyZsqG/KWvoSisq6x7AhYat6zso8yO/F5thGj3A=; b=rbT2mCFK8EJwxs5pXNfY/33/H/qhb9lfiTy4Svxc2GvTs/TLhgo/E2lDAczMRun9Uy TdfXV7l4kuamUv8oKuvr80B0d+ulE28g8qIxMrMVPr81+u8COWKcT4f1BshJ21e7Lr3Z 9tafmUSRSzEuN7NZlUVU4RD8vSjX77hdr8X5ORqtmq2iX6vpW7OTqRnPXW6U+QjtYSxP +5dy+hExOaF8NpKnbNg9wfXvac3/wMtusm1VHIocAgCBPEDeTIGEE8HglBS7tu9CkG+Y GDJq/CjmhLNiKxWrQmXqtdPijRBhp+/CzOYO18PYM2KVpY+/o3wqHPYNVcosCFosNWtv eF2g== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Karol Herbst Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Thierry Reding When Nouveau is instantiated on top of a platform device, the dev->pdev field will be NULL and calling pci_disable_device() will crash. Move the PCI disabling code to the PCI specific driver removal code. Signed-off-by: Thierry Reding Reviewed-by: Lyude Paul --- drivers/gpu/drm/nouveau/nouveau_drm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 2cd83849600f..b65ae817eabf 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -715,7 +715,6 @@ static int nouveau_drm_probe(struct pci_dev *pdev, void nouveau_drm_device_remove(struct drm_device *dev) { - struct pci_dev *pdev = dev->pdev; struct nouveau_drm *drm = nouveau_drm(dev); struct nvkm_client *client; struct nvkm_device *device; @@ -727,7 +726,6 @@ nouveau_drm_device_remove(struct drm_device *dev) device = nvkm_device_find(client->device); nouveau_drm_device_fini(dev); - pci_disable_device(pdev); drm_dev_put(dev); nvkm_device_del(&device); } @@ -738,6 +736,7 @@ nouveau_drm_remove(struct pci_dev *pdev) struct drm_device *dev = pci_get_drvdata(pdev); nouveau_drm_device_remove(dev); + pci_disable_device(pdev); } static int