Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp2399969ybc; Wed, 20 Nov 2019 13:38:49 -0800 (PST) X-Google-Smtp-Source: APXvYqzKCyIlrpAGTNup+dHitJLJu5h4u9dOToXDiGA9VmtrhkekFHtECH5Tg6xZADs3U6qKpe62 X-Received: by 2002:a17:906:751:: with SMTP id z17mr8012304ejb.313.1574285929273; Wed, 20 Nov 2019 13:38:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574285929; cv=none; d=google.com; s=arc-20160816; b=MfvXah7pNJBfw1EOTsuuPr20H8b8Aanz4ThqhmvyuCRScipTk37FwT/4MTY0+ZY4FB EOWdlH06aEeIpDoiKq6idfsD1w2Q/IRU4QF4xqH1oRClBpjDn6m/woCjKvN7haY6C667 +j1PHmNY3AkyspKe+Dxx+oKzgTOJSBEX8DJCQfgzRx29c6ecTddhWefyjP7S4LjliCZb U5bX3kaOJa9qqEG8BI9R9KS8+JFfdCXzvkvugbnp+ORMQYZQQ4ee8DsT84F+hrzrA/TY FI3XRNXMxNQScoI7UCdw1rvQAXs3cvG9KcUIILenu8ZuQ/dlXcJo/NOlyKtMSLpCedQ5 AGjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=0pAJwOUYZlIukE0BbqgWGnjQga+s55dRnSCojvuuOg8=; b=cwAx1OT7NUGjhXZlyyN0yIQKxtd/D8uaKAL6LSPWRrc+pPYeXl6zfVgKBTe2LeYVBY y+ZceJWfdeDNTk+ISPaaR4IZtHRuEpLPWsh+6p40z9sJAfyCoC0hdb1WWvGYcF6AO55x 8dYY1OmdkTYSjtUPBAVcihr2LjdWQQDBY7FrPu42GTGUmpWHdJuYftCheuGt7n5/k7oX soQEUf4X5S3ybJ0AfosqdEPJidlt8rKiNprLe6SG5iDSJXpWvrI1JgGqMl9BtwlCRxnt FWQ1zK3fkYNQ50dDr83wh0J6HWzVB6JVpdFuU6I0MLvfUaqjjREIK9kgyPvbS+XYS7au c2bA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=WnYCpyrj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 91si563844edy.321.2019.11.20.13.38.24; Wed, 20 Nov 2019 13:38:49 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=WnYCpyrj; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726613AbfKTVgq (ORCPT + 99 others); Wed, 20 Nov 2019 16:36:46 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:42320 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725842AbfKTVgq (ORCPT ); Wed, 20 Nov 2019 16:36:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574285804; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0pAJwOUYZlIukE0BbqgWGnjQga+s55dRnSCojvuuOg8=; b=WnYCpyrj2aGLa/LNN6Okn1S8iOzMMNmvquuG2JtT+CBMhvUrbgVCbCegIHZzOekGTE14Yk UtoLD/wjyetuhgDnO/goi9y8zvm69lceRC3rLfP0UItYE/I3o0UC+gHRk3dsKTjzLaOHJG qmeA5oUw9GP9y67PUSr11oLETKv60YY= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-280-Iiwn5MR4MmGcYHxnp2GAPA-1; Wed, 20 Nov 2019 16:36:43 -0500 Received: by mail-qk1-f200.google.com with SMTP id a186so595217qkb.18 for ; Wed, 20 Nov 2019 13:36:43 -0800 (PST) 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=BEOpo1eAW+6WweEGc5o46P0sIScU4OqKVUN6KWPXGDE=; b=bSbqep5FlS/vT2b22OUjnrvZqN8mdzmuk347oekVDFydj6/0a4F8UjRq8Mkf0XVFPD Wm8jV55n+B7rzRiTwUIoeEvVXa/ZNvAf8Oy7U+a9gf6CQPfAcvJK/bT4OIAIgJJBoBwG d1jzudMWJWu2G7b35WLE6iF5VLama+K6pIpwoQaoII2OHvX7ra16USwvplGVVnRkk66w o2E0ls4EmLaE6R9VENrYI5RpVyJwmW7WH7DAWhuROerMTi+72/WRjhpppKkXoflu+j2K 7VeLjB9z8b+C9JDaaNbcXZut5PKoMx0Oeshyd5m6k/mhbzWVLCOG3acdyMjI1fOGeDHY OuUw== X-Gm-Message-State: APjAAAXzTDAsb41Pk7ms/v26qwh+yb2OV4qSY5om+sqtz+0+ENvjPS/E XWWD37E2PmuilPS5REEnzBQXEVczsJC4PzX/YMgwwu2YSZSmzXNbL5HuHOU0J0PTIhDFyHGavXf 08rSmDMcJ1sDdwPgs03wyexfnS5fjg+XsZ9N+Towv X-Received: by 2002:a0c:baad:: with SMTP id x45mr4716317qvf.230.1574285802807; Wed, 20 Nov 2019 13:36:42 -0800 (PST) X-Received: by 2002:a0c:baad:: with SMTP id x45mr4716288qvf.230.1574285802452; Wed, 20 Nov 2019 13:36:42 -0800 (PST) MIME-Version: 1.0 References: <20191120112212.GA11621@lahna.fi.intel.com> <20191120115127.GD11621@lahna.fi.intel.com> <20191120120913.GE11621@lahna.fi.intel.com> <20191120151542.GH11621@lahna.fi.intel.com> <20191120155301.GL11621@lahna.fi.intel.com> <20191120162306.GM11621@lahna.fi.intel.com> In-Reply-To: <20191120162306.GM11621@lahna.fi.intel.com> From: Karol Herbst Date: Wed, 20 Nov 2019 22:36:31 +0100 Message-ID: Subject: Re: [PATCH v4] pci: prevent putting nvidia GPUs into lower device states on certain intel bridges To: Mika Westerberg Cc: "Rafael J. Wysocki" , Bjorn Helgaas , LKML , Lyude Paul , "Rafael J . Wysocki" , Linux PCI , Linux PM , dri-devel , nouveau , Dave Airlie , Mario Limonciello X-MC-Unique: Iiwn5MR4MmGcYHxnp2GAPA-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org with the branch and patch applied: https://gist.githubusercontent.com/karolherbst/03c4c8141b0fa292d781badfa186= 479e/raw/5c62640afbc57d6e69ea924c338bd2836e770d02/gistfile1.txt On Wed, Nov 20, 2019 at 5:23 PM Mika Westerberg wrote: > > On Wed, Nov 20, 2019 at 05:53:07PM +0200, Mika Westerberg wrote: > > On Wed, Nov 20, 2019 at 04:37:14PM +0100, Karol Herbst wrote: > > > On Wed, Nov 20, 2019 at 4:15 PM Mika Westerberg > > > wrote: > > > > > > > > On Wed, Nov 20, 2019 at 01:11:52PM +0100, Karol Herbst wrote: > > > > > On Wed, Nov 20, 2019 at 1:09 PM Mika Westerberg > > > > > wrote: > > > > > > > > > > > > On Wed, Nov 20, 2019 at 12:58:00PM +0100, Karol Herbst wrote: > > > > > > > overall, what I really want to know is, _why_ does it work on= windows? > > > > > > > > > > > > So do I ;-) > > > > > > > > > > > > > Or what are we doing differently on Linux so that it doesn't = work? If > > > > > > > anybody has any idea on how we could dig into this and figure= it out > > > > > > > on this level, this would probably allow us to get closer to = the root > > > > > > > cause? no? > > > > > > > > > > > > Have you tried to use the acpi_rev_override parameter in your s= ystem and > > > > > > does it have any effect? > > > > > > > > > > > > Also did you try to trace the ACPI _ON/_OFF() methods? I think = that > > > > > > should hopefully reveal something. > > > > > > > > > > > > > > > > I think I did in the past and it seemed to have worked, there is = just > > > > > one big issue with this: it's a Dell specific workaround afaik, a= nd > > > > > this issue plagues not just Dell, but we've seen it on HP and Len= ovo > > > > > laptops as well, and I've heard about users having the same issue= s on > > > > > Asus and MSI laptops as well. > > > > > > > > Maybe it is not a workaround at all but instead it simply determine= s > > > > whether the system supports RTD3 or something like that (IIRC Windo= ws 8 > > > > started supporting it). Maybe Dell added check for Linux because at= that > > > > time Linux did not support it. > > > > > > > > > > the point is, it's not checking it by default, so by default you stil= l > > > run into the windows 8 codepath. > > > > Well you can add the quirk to acpi_rev_dmi_table[] so it goes to that > > path by default. There are a bunch of similar entries for Dell machines= . > > > > Of course this does not help the non-Dell users so we would still need > > to figure out the root cause. > > I think I asked you to test the PCIe delay patch and it did not help but > I wonder if it helps if we increase the delay. As an experiment could > you try Bjorn's pci/pm branch. The last two commits are for the delay. > > If you could pull that branch and apply the following patch on top and > give it a try? Then post the dmesg somewhere so we can see whether it > did the delay at all. > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index 1f319b1175da..1ad6f1372ed5 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -4697,12 +4697,7 @@ void pci_bridge_wait_for_secondary_bus(struct pci_= dev *dev) > return; > } > > - /* Take d3cold_delay requirements into account */ > - delay =3D pci_bus_max_d3cold_delay(dev->subordinate); > - if (!delay) { > - up_read(&pci_bus_sem); > - return; > - } > + delay =3D 500; > > child =3D list_first_entry(&dev->subordinate->devices, struct pci= _dev, > bus_list); > @@ -4715,7 +4710,7 @@ void pci_bridge_wait_for_secondary_bus(struct pci_d= ev *dev) > * management for them (see pci_bridge_d3_possible()). > */ > if (!pci_is_pcie(dev)) { > - pci_dbg(dev, "waiting %d ms for secondary bus\n", 1000 + = delay); > + pci_info(dev, "waiting %d ms for secondary bus\n", 1000 += delay); > msleep(1000 + delay); > return; > } > @@ -4741,10 +4736,10 @@ void pci_bridge_wait_for_secondary_bus(struct pci= _dev *dev) > return; > > if (pcie_get_speed_cap(dev) <=3D PCIE_SPEED_5_0GT) { > - pci_dbg(dev, "waiting %d ms for downstream link\n", delay= ); > + pci_info(dev, "waiting %d ms for downstream link\n", dela= y); > msleep(delay); > } else { > - pci_dbg(dev, "waiting %d ms for downstream link, after ac= tivation\n", > + pci_info(dev, "waiting %d ms for downstream link, after a= ctivation\n", > delay); > if (!pcie_wait_for_link_delay(dev, true, delay)) { > /* Did not train, no need to wait any further */ > @@ -4753,7 +4748,7 @@ void pci_bridge_wait_for_secondary_bus(struct pci_d= ev *dev) > } > > if (!pci_device_is_present(child)) { > - pci_dbg(child, "waiting additional %d ms to become access= ible\n", delay); > + pci_info(child, "waiting additional %d ms to become acces= sible\n", delay); > msleep(delay); > } > } >