Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1375195ybz; Wed, 29 Apr 2020 21:04:19 -0700 (PDT) X-Google-Smtp-Source: APiQypLPW6n89D4GtvNbiXczLADqxjv17VjTLcNPapCXTsUBC0LtK+yTbD5ZqK2Re1SRpYxs6VJA X-Received: by 2002:a17:906:804a:: with SMTP id x10mr976176ejw.86.1588219459514; Wed, 29 Apr 2020 21:04:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588219459; cv=none; d=google.com; s=arc-20160816; b=ZL4wj6I0jOuGHh+mO8vzxUPvv0FEbRXGV3/kBiuedhyalX3YzSp4YdViZXvkrt6KcG rWk9L8IFxyPCUZn/y6ibKDoCs2QBbgCGkHaKlTs0aI17UxXh6PaEsG9V9yvIUPQFA1yF vnNnq/XJeB/htt2keKQEjpndcYbN+NBDJqsLv7aXRFffSnOvwRWWwzAFlUB6LaQlEIkR w7ktWbntuNMZxqrHr2SEGvfubC4Z5/yo0YYMmsoKLPAyJtqT6zjcTuEQIxnw5X8VDU3O cC+RZYaGtJIheCdqAnkD5N4r7/D7zcgB+eqYXpUFLLUkYiANBPk1ogG1RbdQHSQFoxvM 4h5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=UVqognKQgntjVBKfSDEux+9/gcTYWUYxOHYZrNrsat0=; b=tgW7LUyBOhFTVnYyMyrrmjNjTyDjM9Uxj2JQvIupP2I9PoG8O2gUSMytn7ErWD/h1L Er4E2EZDJ+2hJ6lPheBEjy68P5+lQPr48/qL7iXzYkz+2s7MFuK3wXZK+K0Sg760UxRq 5uuS7ifKLOg7rmSzUIp6EhvljSsdSf0SkNcX4blLdJZdPgBIW6aQIuSjIVw7FF9ZqJD5 lk2jbxfaQ4+GRpQGDgojqIvs4qzNlALJqc5tFkz/PEc1A5p6rT408aDtGqBNGWKB9pDX JjyM4fxaPiB0+yhcZ/Xtsaksp/kWGgkz9TMKmSKPM+EEHTTxlxhlthPrZWrjZhPI2Lk7 T2Pg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rkZ25Oks; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k15si5172720ejs.61.2020.04.29.21.03.56; Wed, 29 Apr 2020 21:04:19 -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=@gmail.com header.s=20161025 header.b=rkZ25Oks; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726758AbgD3D7v (ORCPT + 99 others); Wed, 29 Apr 2020 23:59:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726453AbgD3D7u (ORCPT ); Wed, 29 Apr 2020 23:59:50 -0400 Received: from mail-yb1-xb41.google.com (mail-yb1-xb41.google.com [IPv6:2607:f8b0:4864:20::b41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1EE2C035494 for ; Wed, 29 Apr 2020 20:59:50 -0700 (PDT) Received: by mail-yb1-xb41.google.com with SMTP id o198so2449820ybg.10 for ; Wed, 29 Apr 2020 20:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UVqognKQgntjVBKfSDEux+9/gcTYWUYxOHYZrNrsat0=; b=rkZ25Oks3o/VpyiWfkX3rZpnI3vPGF94ioT0xhki2b45X5ITlx6+yeuOIhWuYqUXxZ 7L6+p/dLdoG2j3g5Ai9sAitGD169VlugxcSxdNL505Sh4Uu5USTkRTIF7nbkxTd+Xi7k uBnlT3HVPTH2Kh2Pn0N1NK2TES9rq4eF8T6HCxpsYK8DpRTuPJ/5dFoXDr9KKEDa4b4J YWTfwZ88NBLqN6jnhffMLn6OpZpK0mSm4DMIfFiojx7JDO7wN+SqbAEGdiAZGoXzn8mB bjs0HcoC++cwG3g+ZF/IdDpcTk9PE8S8HP85HoaUeMJTwXNrK6BoxOX3bcTXSYPyi4LZ RmcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UVqognKQgntjVBKfSDEux+9/gcTYWUYxOHYZrNrsat0=; b=duwPjqWLUX+OLmutMQxZK1jtHHIz9ly/S5cUEvx3yxgYI3m5knXFIEppd7CxBe2X9q JdT649RlMaMjVZXPJAV/R9OcgiyY7a0ewfxBnduOBuM489dr2PWITzgv9suOvi6g5auH HyQuGqu8LWrWCpuXkuWWzujJWX/3aZFldRhHsAUTd9fEH2IINM+v9ujQt1KkMr/uR0Zv B6t9FSjlkTPFuHE+dmeYeu9p0xJRWvNR1q+A4oja1+aubXwnL3+huer38QxlAYlikuUi ebXj/d9FR2UxsAIPaA4LfJnJTyefVCMWEMr1F2s9ruZQ+wRrtiF9N/vtyZPY1JHHzlx+ mI/w== X-Gm-Message-State: AGi0PuaRhQBT0qLkDT9RrUCnHqsl5BG9FsnxDj++NBqpoA6fSVtf2e0s AUHLlIt07lE+2RvdUxzgO6Yp4hUYMCLmRFfdNj0= X-Received: by 2002:a25:bccb:: with SMTP id l11mr2366341ybm.435.1588219190036; Wed, 29 Apr 2020 20:59:50 -0700 (PDT) MIME-Version: 1.0 References: <20200423062358.1810-1-kai.heng.feng@canonical.com> In-Reply-To: <20200423062358.1810-1-kai.heng.feng@canonical.com> From: Ben Skeggs Date: Thu, 30 Apr 2020 13:59:39 +1000 Message-ID: Subject: Re: [PATCH 1/1] drm/nouveau: Use generic helper to check _PR3 presence To: Kai-Heng Feng Cc: Ben Skeggs , David Airlie , "open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS" , open list , "open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thanks! On Thu, 23 Apr 2020 at 17:37, Kai-Heng Feng wrote: > > Replace nouveau_pr3_present() in favor of a more generic one, > pci_pr3_present(). > > Also the presence of upstream bridge _PR3 doesn't need to go hand in > hand with device's _DSM, so check _PR3 before _DSM. > > Signed-off-by: Kai-Heng Feng > --- > drivers/gpu/drm/nouveau/nouveau_acpi.c | 44 ++++++-------------------- > 1 file changed, 10 insertions(+), 34 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c > index fe3a10255c36..b84dff1b0f28 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c > +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c > @@ -212,37 +212,6 @@ static const struct vga_switcheroo_handler nouveau_dsm_handler = { > .get_client_id = nouveau_dsm_get_client_id, > }; > > -/* > - * Firmware supporting Windows 8 or later do not use _DSM to put the device into > - * D3cold, they instead rely on disabling power resources on the parent. > - */ > -static bool nouveau_pr3_present(struct pci_dev *pdev) > -{ > - struct pci_dev *parent_pdev = pci_upstream_bridge(pdev); > - struct acpi_device *parent_adev; > - > - if (!parent_pdev) > - return false; > - > - if (!parent_pdev->bridge_d3) { > - /* > - * Parent PCI bridge is currently not power managed. > - * Since userspace can change these afterwards to be on > - * the safe side we stick with _DSM and prevent usage of > - * _PR3 from the bridge. > - */ > - pci_d3cold_disable(pdev); > - return false; > - } > - > - parent_adev = ACPI_COMPANION(&parent_pdev->dev); > - if (!parent_adev) > - return false; > - > - return parent_adev->power.flags.power_resources && > - acpi_has_method(parent_adev->handle, "_PR3"); > -} > - > static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out, > bool *has_mux, bool *has_opt, > bool *has_opt_flags, bool *has_pr3) > @@ -250,6 +219,16 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out > acpi_handle dhandle; > bool supports_mux; > int optimus_funcs; > + struct pci_dev *parent_pdev; > + > + *has_pr3 = false; > + parent_pdev = pci_upstream_bridge(pdev); > + if (parent_pdev) { > + if (parent_pdev->bridge_d3) > + *has_pr3 = pci_pr3_present(parent_pdev); > + else > + pci_d3cold_disable(pdev); > + } > > dhandle = ACPI_HANDLE(&pdev->dev); > if (!dhandle) > @@ -270,7 +249,6 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out > *has_mux = supports_mux; > *has_opt = !!optimus_funcs; > *has_opt_flags = optimus_funcs & (1 << NOUVEAU_DSM_OPTIMUS_FLAGS); > - *has_pr3 = false; > > if (optimus_funcs) { > uint32_t result; > @@ -280,8 +258,6 @@ static void nouveau_dsm_pci_probe(struct pci_dev *pdev, acpi_handle *dhandle_out > (result & OPTIMUS_ENABLED) ? "enabled" : "disabled", > (result & OPTIMUS_DYNAMIC_PWR_CAP) ? "dynamic power, " : "", > (result & OPTIMUS_HDA_CODEC_MASK) ? "hda bios codec supported" : ""); > - > - *has_pr3 = nouveau_pr3_present(pdev); > } > } > > -- > 2.17.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel