cannot boot with linux-libre>=5.7, amdgpu and cryptsetup

edgar at openmail.cc edgar at openmail.cc
Wed Jul 15 21:27:32 UTC 2020


On 2020-07-15 02:59, edgar at openmail.cc wrote:
> As I said, I just glanced at the documentation to create the patched
> version of =linux-libre=, but I already downloaded the source for
> =5.7.8= and the deblobbing scripts. If you have specific instructions
> based on the log outputs that I am sending, let me know.

** Finding the right card

#+begin_SRC bash :results raw :wrap example
   gunzip -c ./lspci-5.7.8.log.gz | grep -i vga
#+end_SRC

#+RESULTS:
#+begin_example
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. 
[AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] 
[1002:15dd] (rev c4)
#+end_example

If I run dmesg with linux-libre 5.4.48 (LTS), I also found that
#+begin_EXAMPLE
   ...
   [    1.523096] [drm] add ip block number 2 <vega10_ih>
   [    1.523097] [drm] add ip block number 3 <psp>
   [    1.523098] [drm] add ip block number 4 <gfx_v9_0>
   ...
#+end_EXAMPLE

According to 
https://wiki.freedesktop.org/xorg/RadeonFeature/#decoderringforengineeringvsmarketingnames, 
I would then conclude that my graphics card is

#+begin_EXAMPLE
GFX9 	VEGA10, VEGA12, VEGA20, RAVEN, RENOIR 	6 	12 	4.x 	16384 	16384 
	GCN
#+end_EXAMPLE

All that seems to agree with the source files:
#+begin_SRC bash :dir linux-5.7/drivers/gpu/drm/amd/amdgpu :var 
gpuname="raven" :results raw :wrap example
   find . -type f -exec grep -nH -e "$gpuname" \{\} +
#+end_SRC

#+RESULTS:
#+begin_example
./amdgpu_device.c:1519:			chip_name = "raven2";
./amdgpu_device.c:1523:			chip_name = "raven";
./gfx_v9_0.c:1208:static bool is_raven_kicker(struct amdgpu_device 
*adev)
./gfx_v9_0.c:1228:		    ((!is_raven_kicker(adev) &&
./gfx_v9_0.c:1349:	else if (!strcmp(chip_name, "raven") && 
(amdgpu_pm_load_smu_firmware(adev, &smu_version) == 0) &&
./gfx_v9_0.c:1564:			chip_name = "raven2";
./gfx_v9_0.c:1568:			chip_name = "raven";
./gfx_v9_0.c:6780:			adev->gds.gds_compute_max_wave_id = 0x77; /* raven2 
*/
./gfx_v9_0.c:6782:			adev->gds.gds_compute_max_wave_id = 0x15f; /* 
raven1 */
./soc15.c:566:	/* original raven doesn't have full asic reset */
./psp_v10_0.c:55:			chip_name = "raven2";
./psp_v10_0.c:59:			chip_name = "raven";
./sdma_v4_0.c:555:			chip_name = "raven2";
./sdma_v4_0.c:559:			chip_name = "raven";
#+end_example

#+begin_SRC bash :dir linux-5.7/drivers/gpu/drm/amd/amdgpu :var 
gpuname="raven" look4="_init_microcode" :results raw :wrap example
   while IFS= read src_file; do
       grep -nH -e "$look4" "$src_file"
   done < <(find . -type f -exec grep -l -e "$gpuname" \{\} +)
#+end_SRC

#+RESULTS:
#+begin_example
./gfx_v9_0.c:1545:static int gfx_v9_0_init_microcode(struct 
amdgpu_device *adev)
./gfx_v9_0.c:2228:	r = gfx_v9_0_init_microcode(adev);
./psp_v10_0.c:42:static int psp_v10_0_init_microcode(struct psp_context 
*psp)
./psp_v10_0.c:372:	.init_microcode = psp_v10_0_init_microcode,
./sdma_v4_0.c~:522: * sdma_v4_0_init_microcode - load ucode images from 
disk
./sdma_v4_0.c~:533:static int sdma_v4_0_init_microcode(struct 
amdgpu_device *adev)
./sdma_v4_0.c~:1763:	r = sdma_v4_0_init_microcode(adev);
./gfx_v9_0.c~:1545:static int gfx_v9_0_init_microcode(struct 
amdgpu_device *adev)
./gfx_v9_0.c~:2228:	r = gfx_v9_0_init_microcode(adev);
./sdma_v4_0.c:522: * sdma_v4_0_init_microcode - load ucode images from 
disk
./sdma_v4_0.c:533:static int sdma_v4_0_init_microcode(struct 
amdgpu_device *adev)
./sdma_v4_0.c:1763:	r = sdma_v4_0_init_microcode(adev);
#+end_example

** Patching sources

The result of my modifications would be
#+begin_SRC diff :file 011-deblob-amdgpu-raven.patch
   --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c	2020-05-31 
20:44:41.000000000 -0500
   +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c	2020-07-15 
09:22:24.389674167 -0500
   @@ -1763,5 +1763,5 @@
       r = sdma_v4_0_init_microcode(adev);
       if (r) {
           DRM_ERROR("Failed to load sdma firmware!\n");
   -		return r;
   +		/*(DEBLOBBED)*/;
       }

       /* TODO: Page queue breaks driver reload under SRIOV */
   --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c	2020-05-31 
20:44:41.000000000 -0500
   +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c	2020-07-15 
09:21:29.699675376 -0500
   @@ -2228,5 +2228,5 @@
       r = gfx_v9_0_init_microcode(adev);
       if (r) {
           DRM_ERROR("Failed to load gfx firmware!\n");
   -		return r;
   +		/*(DEBLOBBED)*/;
       }

       r = adev->gfx.rlc.funcs->init(adev);
#+end_SRC

#+begin_SRC diff :file deblob-amdgpu-raven.patch
   --- a/deblob-5.7	2020-07-09 05:53:15.000000000 -0500
   +++ b/deblob-5.7	2020-07-15 11:53:29.529473809 -0500
   @@ -177,7 +177,7 @@
       :
          else
       die $1 does not contain matches for $2
   -      fi
   +      fi
          return 0
        fi
        ;;
   @@ -947,6 +947,12 @@
    /r = si_init_microcode(rdev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
    ' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
    clean_sed '
   +/r = gfx_v9_0_init_microcode(adev);/,/}/ s,return r;,/*(DEBLOBBED)*/,
   +' drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 'enable blobless activation'
   +clean_sed '
   +/r = sdma_v4_0_init_microcode(adev);;/,/}/ s,return 
r;,/*(DEBLOBBED)*/,
   +' drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 'enable blobless activation'
   +clean_sed '
    /if (!rdev->mc_fw) {/,/}/ s,return -EINVAL;,/*(DEBLOBBED)*/,
    ' drivers/gpu/drm/radeon/si.c 'enable blobless activation'
    reject_firmware drivers/gpu/drm/radeon/cik.c
#+end_SRC

** Testing with =modprobe= failed

May be I did not conpile correctly, but I added 
=011-deblob-amdgpu-raven.patch= and the corresponding sha512sum to the 
PKGBUILD for =linux-libre= (from Parabola GNU/Linux). After compilation 
and installation in the partition where I have SystemD, I tried to 
=moprobe amdgpu= and not only does the screen go blank, but the keyboard 
becomes unresponsive

-------------------------------------------------
This free account was provided by VFEmail.net - report spam to abuse at vfemail.net
 
ONLY AT VFEmail! - Use our Metadata Mitigator to keep your email out of the NSA's hands!
$24.95 ONETIME Lifetime accounts with Privacy Features!  
15GB disk! No bandwidth quotas!
Commercial and Bulk Mail Options!  
-------------- next part --------------
A non-text attachment was scrubbed...
Name: deblob-amdgpu-raven.patch
Type: text/x-diff
Size: 873 bytes
Desc: not available
URL: <http://www.fsfla.org/pipermail/linux-libre/attachments/20200715/ddfcd070/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0011-deblob-amdgpu-raven.patch
Type: text/x-diff
Size: 733 bytes
Desc: not available
URL: <http://www.fsfla.org/pipermail/linux-libre/attachments/20200715/ddfcd070/attachment-0001.patch>


More information about the linux-libre mailing list