From: "Lazar, Lijo" <lijo.lazar@amd.com>
To: Mario Limonciello <mario.limonciello@amd.com>,
Javier Martinez Canillas <javierm@redhat.com>,
Alex Deucher <alexander.deucher@amd.com>
Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org, Daniel Vetter <daniel@ffwll.ch>,
Carlos Soriano Sanchez <csoriano@redhat.com>,
David Airlie <airlied@gmail.com>,
christian.koenig@amd.com
Subject: Re: [PATCH v2 00/11] Recover from failure to probe GPU
Date: Tue, 3 Jan 2023 15:40:26 +0530 [thread overview]
Message-ID: <de34e018-679d-893e-683e-5c10cbc9c5b2@amd.com> (raw)
In-Reply-To: <20221228163102.468-1-mario.limonciello@amd.com>
On 12/28/2022 10:00 PM, Mario Limonciello wrote:
> One of the first thing that KMS drivers do during initialization is
> destroy the system firmware framebuffer by means of
> `drm_aperture_remove_conflicting_pci_framebuffers`
>
> This means that if for any reason the GPU failed to probe the user
> will be stuck with at best a screen frozen at the last thing that
> was shown before the KMS driver continued it's probe.
>
> The problem is most pronounced when new GPU support is introduced
> because users will need to have a recent linux-firmware snapshot
> on their system when they boot a kernel with matching support.
>
> However the problem is further exaggerated in the case of amdgpu because
> it has migrated to "IP discovery" where amdgpu will attempt to load
> on "ALL" AMD GPUs even if the driver is missing support for IP blocks
> contained in that GPU.
>
> IP discovery requires some probing and isn't run until after the
> framebuffer has been destroyed.
>
> This means a situation can occur where a user purchases a new GPU not
> yet supported by a distribution and when booting the installer it will
> "freeze" even if the distribution doesn't have the matching kernel support
> for those IP blocks.
>
> The perfect example of this is Ubuntu 22.10 and the new dGPUs just
> launched by AMD. The installation media ships with kernel 5.19 (which
> has IP discovery) but the amdgpu support for those IP blocks landed in
> kernel 6.0. The matching linux-firmware was released after 22.10's launch.
> The screen will freeze without nomodeset. Even if a user manages to install
> and then upgrades to kernel 6.0 after install they'll still have the
> problem of missing firmware, and the same experience.
>
> This is quite jarring for users, particularly if they don't know
> that they have to use "nomodeset" to install.
>
> To help the situation make changes to GPU discovery:
> 1) Delay releasing the firmware framebuffer until after IP discovery has
> completed. This will help the situation of an older kernel that doesn't
> yet support the IP blocks probing a new GPU.
> 2) Request loading all PSP, VCN, SDMA, MES and GC microcode into memory
> during IP discovery. This will help the situation of new enough kernel for
> the IP discovery phase to otherwise pass but missing microcode from
> linux-firmware.git.
>
> Not all requested firmware will be loaded during IP discovery as some of it
> will require larger driver architecture changes. For example SMU firmware
> isn't loaded on certain products, but that's not known until later on when
> the early_init phase of the SMU load occurs.
>
> v1->v2:
> * Take the suggestion from v1 thread to delay the framebuffer release until
> ip discovery is done. This patch is CC to stable to that older stable
> kernels with IP discovery won't try to probe unknown IP.
> * Drop changes to drm aperature.
> * Fetch SDMA, VCN, MES, GC and PSP microcode during IP discovery.
>
What is the gain here in just checking if firmware files are available?
It can fail anywhere during sw_init and it's the same situation.
Restricting IP FWs to IP specific files looks better to me than
centralizing and creating interdependencies.
Thanks,
Lijo
> Mario Limonciello (11):
> drm/amd: Delay removal of the firmware framebuffer
> drm/amd: Add a legacy mapping to "amdgpu_ucode_ip_version_decode"
> drm/amd: Convert SMUv11 microcode init to use
> `amdgpu_ucode_ip_version_decode`
> drm/amd: Convert SMU v13 to use `amdgpu_ucode_ip_version_decode`
> drm/amd: Request SDMA microcode during IP discovery
> drm/amd: Request VCN microcode during IP discovery
> drm/amd: Request MES microcode during IP discovery
> drm/amd: Request GFX9 microcode during IP discovery
> drm/amd: Request GFX10 microcode during IP discovery
> drm/amd: Request GFX11 microcode during IP discovery
> drm/amd: Request PSP microcode during IP discovery
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 590 +++++++++++++++++-
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 -
> drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 -
> drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 9 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h | 2 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 208 ++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 85 +--
> drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 180 +-----
> drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 64 +-
> drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 143 +----
> drivers/gpu/drm/amd/amdgpu/mes_v10_1.c | 28 -
> drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 25 +-
> drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | 106 +---
> drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 165 +----
> drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 102 +--
> drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 82 ---
> drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c | 36 --
> drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | 36 --
> drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 61 +-
> drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 42 +-
> drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 65 +-
> drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 30 +-
> .../gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 35 +-
> .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 12 +-
> 25 files changed, 919 insertions(+), 1203 deletions(-)
>
>
> base-commit: de9a71e391a92841582ca3008e7b127a0b8ccf41
next prev parent reply other threads:[~2023-01-03 10:11 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-28 16:30 Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 01/11] drm/amd: Delay removal of the firmware framebuffer Mario Limonciello
2022-12-29 14:35 ` Javier Martinez Canillas
2022-12-28 16:30 ` [PATCH v2 02/11] drm/amd: Add a legacy mapping to "amdgpu_ucode_ip_version_decode" Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 03/11] drm/amd: Convert SMUv11 microcode init to use `amdgpu_ucode_ip_version_decode` Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 04/11] drm/amd: Convert SMU v13 " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 05/11] drm/amd: Request SDMA microcode during IP discovery Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 06/11] drm/amd: Request VCN " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 07/11] drm/amd: Request MES " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 08/11] drm/amd: Request GFX9 " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 09/11] drm/amd: Request GFX10 " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 10/11] drm/amd: Request GFX11 " Mario Limonciello
2022-12-28 16:30 ` [PATCH v2 11/11] drm/amd: Request PSP " Mario Limonciello
2022-12-29 17:33 ` Alex Deucher
2022-12-29 17:31 ` [PATCH v2 00/11] Recover from failure to probe GPU Alex Deucher
2023-01-03 10:10 ` Lazar, Lijo [this message]
2023-01-03 14:17 ` Alex Deucher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=de34e018-679d-893e-683e-5c10cbc9c5b2@amd.com \
--to=lijo.lazar@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=csoriano@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mario.limonciello@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®