Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp1430965rwl; Wed, 29 Mar 2023 18:13:42 -0700 (PDT) X-Google-Smtp-Source: AKy350YNnAPlR1P5tmjA2NWv++p1dt1SiTDxNoBfk40RSfjsjECiDSjhNVol223iIEUOW1dkSwu0 X-Received: by 2002:aa7:c554:0:b0:502:2148:298c with SMTP id s20-20020aa7c554000000b005022148298cmr21175491edr.19.1680138822050; Wed, 29 Mar 2023 18:13:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680138822; cv=none; d=google.com; s=arc-20160816; b=cQJEJmXYM7DEdEF5xhK85q1VHdb+rrgRaBgTNc+EeTLaZf/UtaH//dLM0/uCEDBzK9 CSqUYDEEM6ZQo7/1N5dmsdU321uZGllChHbaxxf2qt55CiZ8KQvX0toKCzaqjNKb81Z4 BOdccGG06o5QAZ6bfWcATqgkt/YG/36HfDZtEOKtwSPuwcV6kW0P/AhD0sKgxHehGNAX 3RwR7ubDlZcDQEzwCbdOJaO40fJhkqkrGjeTE90FqwZ7efwSLhynaK9lc6H5oBnJLGBp zG1nxOzimnPajqwL4/tqsE04/S1yjq8JE/VvPS5GMy5J862FiweqmU+0/QKFRVD45kGo 8lNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=2bTlOOOOVa4/gjv3TZ+YFUjSIkiCAUcO1Pmm7DLw2W0=; b=U7T6J/qartGdPKcSJBKAVZn5A3eMfJxIKfGtVrxAr1hEnVPWHF0ZHgTEjY6AAS2DVT tHgaXF9HPk1dzAtfyqnpSLuOnCxHnf6NivJLtnAOHr5nG69wc8NMINXbS2kJVGVDKhN5 cYAFdhIPx10VDKV/WaOG+/OJm4UO0B2x1/YtuJQhmvbn+JTZpfPVUK7pSfMT4/aZNvTl PwgEDxJm3oac5pollWjmhnKU4chvOX9Y5RMSBlQ4yB/Q2/+RLX0W+zgPEHehQ0wzftMe x++jZd21Q2jWvDXs5r0wwJVF/HypK+puI5u8FngkuLPCsZpo5xe28MT77+0TqNHTbd9X eWtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=OMbQPawf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n24-20020a05640206d800b004aaa505ac5fsi38195737edy.76.2023.03.29.18.13.16; Wed, 29 Mar 2023 18:13:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@canonical.com header.s=20210705 header.b=OMbQPawf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229705AbjC3AtX (ORCPT + 99 others); Wed, 29 Mar 2023 20:49:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229449AbjC3AtW (ORCPT ); Wed, 29 Mar 2023 20:49:22 -0400 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5925A420F for ; Wed, 29 Mar 2023 17:49:19 -0700 (PDT) Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id F15483F233 for ; Thu, 30 Mar 2023 00:49:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1680137356; bh=2bTlOOOOVa4/gjv3TZ+YFUjSIkiCAUcO1Pmm7DLw2W0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=OMbQPawfa3fbkSt/oIWgXF9Vdt+m02uusql4Yu7RsYvyZtC7OI+A1cXD6dsl8RBOo k1Z9Ln7MooHUqExefYRyp+Y/LtlAby+MEEYSF9/AXsXOSwcgzkn2mMLyCBDUGy4R/P LTVs1RuMG7XPOzN1NXLdbjmZO269jVZ6cHbAT2ePLl7TUFeLJYPXk2uVc4Ol2ycMPq sOVP6DPBeAM3GcYDd1IdPPY/1wVUr69oCDsAeaM6HPFaco0MwnQ3pcbNNM4wQCKUw2 OGqvXMmmlKHOGs2xG+tP/J5NXDTpN7XPR3xtNUc7oFNlQlB3JPrS45Ay2vkkfNns8S eP0tCufNky9DA== Received: by mail-pf1-f197.google.com with SMTP id b8-20020aa78708000000b005eaa50faa35so8182582pfo.20 for ; Wed, 29 Mar 2023 17:49:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680137354; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2bTlOOOOVa4/gjv3TZ+YFUjSIkiCAUcO1Pmm7DLw2W0=; b=KmFJk6KIjSstz0w8Tg7yFNURGtCWgIa2GYIxGwiI40wRL4P35+JEzAekLNSMPI/39t 9KHGnfpwR8HwNoFOiQCy5N9nrgMTl1Tc2sScE6hnePKctRCjt3++Ypk6KeiZe4JgooAS M57bIaB0gS6HyuIzriRpfrJXOhEGfERjt99pu1yMwsnOrANXdCw5BrQVJNZ5OR/dFKXK gGebEpmHpHzpP1EmQtJGKEEwKFCITMJxK+QtoOmk2AK8jkdgKIuL5py9EHoNom8Flc8k ObHTp/IrDZ9nsLqjfcO7j8GfqAe8xfxMExx43YBIejN30tHuShEh3Mn7H87kn3lik8XA FH7A== X-Gm-Message-State: AAQBX9e+hL/eS52JqHfrwf9vQq0DbCujqKVfY7Pa+1QtQfNcDNVsoF4C 8wN/0H6TmeJSPnM9PkutiY/NKdus92oZyNfv5xcsWzRx1+u3Gaocq/VoB5aLmw58LURfA8uXb6V bzaxOUOmUwOOoMVo8Eztgh6K4Ez6JICNbbxHtu8ykw4hwSIprVMtiwjFSyg== X-Received: by 2002:a17:902:ea0c:b0:1a0:527b:9189 with SMTP id s12-20020a170902ea0c00b001a0527b9189mr7876950plg.11.1680137354470; Wed, 29 Mar 2023 17:49:14 -0700 (PDT) X-Received: by 2002:a17:902:ea0c:b0:1a0:527b:9189 with SMTP id s12-20020a170902ea0c00b001a0527b9189mr7876926plg.11.1680137354120; Wed, 29 Mar 2023 17:49:14 -0700 (PDT) MIME-Version: 1.0 References: <20230329095933.1203559-1-kai.heng.feng@canonical.com> In-Reply-To: From: Kai-Heng Feng Date: Thu, 30 Mar 2023 08:49:02 +0800 Message-ID: Subject: Re: [PATCH 1/2] drm/amdgpu: Reset GPU on S0ix when device supports BOCO To: Alex Deucher Cc: alexander.deucher@amd.com, christian.koenig@amd.com, Xinhui.Pan@amd.com, Jingyu Wang , Andrey Grodzovsky , Lijo Lazar , dri-devel@lists.freedesktop.org, =?UTF-8?Q?Michel_D=C3=A4nzer?= , YiPeng Chai , Mario Limonciello , Guchun Chen , "Rafael J. Wysocki" , amd-gfx@lists.freedesktop.org, Jiansong Chen , Kenneth Feng , Tim Huang , Bokun Zhang , Hans de Goede , Maxime Ripard , Evan Quan , Somalapuram Amaranath , linux-kernel@vger.kernel.org, Hawking Zhang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 29, 2023 at 9:21=E2=80=AFPM Alex Deucher wrote: > > On Wed, Mar 29, 2023 at 6:00=E2=80=AFAM Kai-Heng Feng > wrote: > > > > When the power is lost due to ACPI power resources being turned off, th= e > > driver should reset the GPU so it can work anew. > > > > First, _PR3 support of the hierarchy needs to be found correctly. Since > > the GPU on some discrete GFX cards is behind a PCIe switch, checking th= e > > _PR3 on downstream port alone is not enough, as the _PR3 can associate > > to the root port above the PCIe switch. > > > > Once the _PR3 is found and BOCO support is correctly marked, use that > > information to inform the GPU should be reset. This solves an issue tha= t > > system freeze on a Intel ADL desktop that uses S0ix for sleep and D3col= d > > is supported for the GFX slot. > > I don't think we need to reset the GPU. If the power is turned off, a > reset shouldn't be necessary. The reset is only necessary when the > power is not turned off to put the GPU into a known good state. It > should be in that state already if the power is turn off. It sounds > like the device is not actually getting powered off. I had the impression that the GPU gets reset because S3 turned the power rail off. So the actual intention for GPU reset is because S3 doesn't guarantee the power is being turned off? Kai-Heng > > Alex > > > > > Fixes: 0064b0ce85bb ("drm/amd/pm: enable ASPM by default") > > Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1885 > > Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2458 > > Signed-off-by: Kai-Heng Feng > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 3 +++ > > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 ++++++- > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 12 +++++------- > > 3 files changed, 14 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c b/drivers/gpu/drm= /amd/amdgpu/amdgpu_acpi.c > > index 60b1857f469e..407456ac0e84 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c > > @@ -987,6 +987,9 @@ bool amdgpu_acpi_should_gpu_reset(struct amdgpu_dev= ice *adev) > > if (amdgpu_sriov_vf(adev)) > > return false; > > > > + if (amdgpu_device_supports_boco(adev_to_drm(adev))) > > + return true; > > + > > #if IS_ENABLED(CONFIG_SUSPEND) > > return pm_suspend_target_state !=3D PM_SUSPEND_TO_IDLE; > > #else > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/d= rm/amd/amdgpu/amdgpu_device.c > > index f5658359ff5c..d56b7a2bafa6 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > > @@ -2181,7 +2181,12 @@ static int amdgpu_device_ip_early_init(struct am= dgpu_device *adev) > > > > if (!(adev->flags & AMD_IS_APU)) { > > parent =3D pci_upstream_bridge(adev->pdev); > > - adev->has_pr3 =3D parent ? pci_pr3_present(parent) : fa= lse; > > + do { > > + if (pci_pr3_present(parent)) { > > + adev->has_pr3 =3D true; > > + break; > > + } > > + } while ((parent =3D pci_upstream_bridge(parent))); > > } > > > > amdgpu_amdkfd_device_probe(adev); > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/= amd/amdgpu/amdgpu_drv.c > > index ba5def374368..5d81fcac4b0a 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > > @@ -2415,10 +2415,11 @@ static int amdgpu_pmops_suspend(struct device *= dev) > > struct drm_device *drm_dev =3D dev_get_drvdata(dev); > > struct amdgpu_device *adev =3D drm_to_adev(drm_dev); > > > > - if (amdgpu_acpi_is_s0ix_active(adev)) > > - adev->in_s0ix =3D true; > > - else if (amdgpu_acpi_is_s3_active(adev)) > > + if (amdgpu_acpi_is_s3_active(adev) || > > + amdgpu_device_supports_boco(drm_dev)) > > adev->in_s3 =3D true; > > + else if (amdgpu_acpi_is_s0ix_active(adev)) > > + adev->in_s0ix =3D true; > > if (!adev->in_s0ix && !adev->in_s3) > > return 0; > > return amdgpu_device_suspend(drm_dev, true); > > @@ -2449,10 +2450,7 @@ static int amdgpu_pmops_resume(struct device *de= v) > > adev->no_hw_access =3D true; > > > > r =3D amdgpu_device_resume(drm_dev, true); > > - if (amdgpu_acpi_is_s0ix_active(adev)) > > - adev->in_s0ix =3D false; > > - else > > - adev->in_s3 =3D false; > > + adev->in_s0ix =3D adev->in_s3 =3D false; > > return r; > > } > > > > -- > > 2.34.1 > >