]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd: Move microcode init from sw_init to early_init for SDMA v6.0
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 25 Sep 2023 19:01:35 +0000 (14:01 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 28 Sep 2023 19:37:43 +0000 (15:37 -0400)
As part of IP discovery early_init is run for all HW IP blocks.
During this phase all firmware is supposed to be identified that may
be missing so that the driver can avoid releasing resources used by
the EFI framebuffer or simpledrm until the last possible moment.

Move microcode loading from sw_init to early_init.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c

index 2c0c2e9f2783187d613bc62a95898215241f92ca..1f8122fd1ad777406d098d50c2c62f8ec7fe4619 100644 (file)
@@ -1258,6 +1258,11 @@ static void sdma_v6_0_set_ras_funcs(struct amdgpu_device *adev)
 static int sdma_v6_0_early_init(void *handle)
 {
        struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       int r;
+
+       r = amdgpu_sdma_init_microcode(adev, 0, true);
+       if (r)
+               return r;
 
        sdma_v6_0_set_ring_funcs(adev);
        sdma_v6_0_set_buffer_funcs(adev);
@@ -1282,10 +1287,6 @@ static int sdma_v6_0_sw_init(void *handle)
        if (r)
                return r;
 
-       r = amdgpu_sdma_init_microcode(adev, 0, true);
-       if (r)
-               return r;
-
        for (i = 0; i < adev->sdma.num_instances; i++) {
                ring = &adev->sdma.instance[i].ring;
                ring->ring_obj = NULL;