Subject: 3.18.3 standard OK on Steam Deck, but not extended

From: [email-masked]
Date: Sun, 17 Sep 2023 19:35:16 +0100

I'm experimenting with Alpine on the Steam Deck.

I have been able to set up from alpine-standard-3.18.3-x86_64.iso at the 
console without problems.  However, alpine-extended-3.18.3-x86_64.iso 
does not display anything further past the "loading drivers" text.

I was able to make an extended installation indirectly using libvirt, 
then boot it native, and I get the same behaviour at boot.  The system 
is not hung, since I can blindly type, log in, and reboot.  Afterwards, 
I was able to capture dmesg.

On standard, my dmesg looks like:

[    7.531932] [drm] GART: num cpu pages 262144, num gpu pages 262144
[    7.532653] [drm] PCIE GART of 1024M enabled (table at 
0x000000F43FC00000).
[    7.535148] amdgpu 0000:04:00.0: amdgpu: PSP runtime database doesn't 
exist
[    7.535153] amdgpu 0000:04:00.0: amdgpu: PSP runtime database doesn't 
exist
[    7.536114] [drm] Loading DMUB firmware via PSP: version=0x0300000A
[    7.543865] [drm] use_doorbell being set to: [true]
[    7.546046] [drm] Found VCN firmware Version ENC: 1.27 DEC: 2 VEP: 0 
Revision: 0
[    7.546078] amdgpu 0000:04:00.0: amdgpu: Will use PSP to load VCN 
firmware
[    7.570098] [drm] reserve 0xa00000 from 0xf43e000000 for PSP TMR
[    7.661959] amdgpu 0000:04:00.0: amdgpu: SMU is initialized successfully!

but on extended, the same part of the loading looks like:

[   16.962235] [drm] GART: num cpu pages 262144, num gpu pages 262144
[   16.962954] [drm] PCIE GART of 1024M enabled (table at 
0x000000F43FC00000).
[   16.965764] amdgpu 0000:04:00.0: Direct firmware load for 
amdgpu/vangogh_asd.bin failed with error -2
[   16.965771] amdgpu 0000:04:00.0: amdgpu: fail to initialize asd microcode
[   16.965774] [drm:psp_sw_init [amdgpu]] *ERROR* Failed to load psp 
firmware!
[   16.966051] [drm:amdgpu_device_init.cold [amdgpu]] *ERROR* sw_init of 
IP block <psp> failed -2
[   16.966347] amdgpu 0000:04:00.0: amdgpu: amdgpu_device_ip_init failed
[   16.966351] amdgpu 0000:04:00.0: amdgpu: Fatal error during GPU init
[   16.966354] amdgpu 0000:04:00.0: amdgpu: amdgpu: finishing device.
[   16.967120] ------------[ cut here ]------------
[   16.967121] WARNING: CPU: 0 PID: 3318 at 
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:655 amdgpu_irq_put+0x4d/0x90 
[amdgpu]
[   16.967372] Modules linked in: amdgpu(+) iommu_v2 gpu_sched drm_buddy 
hwmon i2c_algo_bit drm_ttm_helper ttm drm_display_helper cec ltrf216a 
industrialio intel_rapl_msr input_leds intel_rapl_common kvm_amd ccp kvm 
irqbypass crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel 
sha512_ssse3 aesni_intel crypto_simd cryptd rapl snd_soc_cs35l41_spi 
snd_soc_cs35l41 snd_soc_wm_adsp cs_dsp snd_soc_cs35l41_lib regmap_spi 
snd_soc_nau8821 snd_soc_core snd_compress snd_pcm snd_timer snd 
soundcore tpm_crb tpm_tis tpm_tis_core tpm rng_core evdev joydev thermal 
mousedev hid_multitouch button i2c_hid_acpi i2c_hid acpi_cpufreq ac 
efivarfs sd_mod t10_pi crc64_rocksoft crc64 uas usb_storage scsi_mod 
scsi_common mmc_block hid_generic usbhid hid video wmi xhci_pci 
xhci_pci_renesas xhci_hcd usbcore usb_common sdhci_pci cqhci sdhci 
mmc_core battery simpledrm drm_shmem_helper drm_kms_helper cfbfillrect 
syscopyarea cfbimgblt sysfillrect sysimgblt fb_sys_fops cfbcopyarea drm 
drm_panel_orientation_quirks
[   16.967480]  agpgart loop zfs(PO) zunicode(PO) zzstd(O) zlua(O) 
zavl(PO) icp(PO) zcommon(PO) znvpair(PO) spl(O)
[   16.967493] CPU: 0 PID: 3318 Comm: modprobe Tainted: P           O 
    6.1.53-0-lts #1-Alpine
[   16.967497] Hardware name: Valve Jupiter/Jupiter, BIOS F7A0110 08/20/2022
[   16.967499] RIP: 0010:amdgpu_irq_put+0x4d/0x90 [amdgpu]
[   16.967792] Code: 74 3c 89 d1 48 8d 04 88 8b 08 85 c9 74 1c f0 ff 08 
b8 00 00 00 00 74 0d 31 d2 31 c9 31 f6 31 ff e9 c8 c3 bb e1 e9 63 fd ff 
ff <0f> 0b b8 ea ff ff ff 31 d2 31 c9 31 f6 31 ff e9 af c3 bb e1 b8 ea
[   16.967795] RSP: 0018:ffffbc144384fac8 EFLAGS: 00010246
[   16.967797] RAX: ffff92f2011823f8 RBX: ffff92f20a5c0000 RCX: 
0000000000000000
[   16.967799] RDX: 0000000000000000 RSI: ffff92f20a5c0cf0 RDI: 
ffff92f20a5c0000
[   16.967800] RBP: ffff92f20a5c0010 R08: 0000000000000000 R09: 
0000000000000000
[   16.967801] R10: 0000000000000000 R11: 0000000000000000 R12: 
ffff92f20a5c0010
[   16.967802] R13: 0000000000000001 R14: ffff92f20a5c0010 R15: 
ffff92f20a5c0000
[   16.967804] FS:  00007fdee5a80b48(0000) GS:ffff92f52fc00000(0000) 
knlGS:0000000000000000
[   16.967805] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   16.967807] CR2: 00007f31cc296000 CR3: 000000010ef04000 CR4: 
0000000000350ef0
[   16.967809] Call Trace:
[   16.967813]  <TASK>
[   16.967815]  ? __warn+0x7d/0xc0
[   16.967822]  ? amdgpu_irq_put+0x4d/0x90 [amdgpu]
[   16.968058]  ? report_bug+0xf4/0x180
[   16.968064]  ? handle_bug+0x42/0x80
[   16.968069]  ? exc_invalid_op+0x13/0x70
[   16.968072]  ? asm_exc_invalid_op+0x16/0x20
[   16.968077]  ? amdgpu_irq_put+0x4d/0x90 [amdgpu]
...
[   16.969466] ---[ end trace 0000000000000000 ]---
[   16.969746] amdgpu: probe of 0000:04:00.0 failed with error -2
[   16.969853] [drm] amdgpu: ttm finalized

 From this I'm guessing that "extended" has a driver that "standard" 
does not, but that driver doesn't actually load.

I would like two things:

1. How can I disable whatever "extended" has that is causing this, so 
that the installation is usable.  I don't need graphics for what I'm doing.

2. Any pointers on how to debug "extended" so that it comes up on the 
Steam Deck.

Incidentally, the Xen ISO also does not come up on Steam Deck, and I'm 
quite interested in that for PCI passthrough experiments.  I'm not sure 
how to make progress with that.

Thanks!

---

From: [email-masked]
Date: Sun, 17 Sep 2023 20:26:38 +0100

On 2023-09-17 19:35, [email-masked] wrote:
> I was able to make an extended installation indirectly using libvirt, ...
...
> that the installation is usable.  I don't need graphics for what I'm doing.

I realised that these two statements are linked, and that setup-disk 
does not do what I was expecting.  setup-disk does not create a generic 
system, but one specialised to the system it is currently running on. 
You can see this at 
https://gitlab.alpinelinux.org/alpine/alpine-conf/-/blob/80370671291376ee040e5e25c0ea38a9c0780f2a/setup-disk.in#L500-509 
, where the script uses the current contents of /sys to filter packages.

I used a Libvirt/QEMU/KVM VM to get around the problem booting the ISO, 
but that created a system only containing firmware for that VM, and not 
the Steam Deck.

So, I was able to get the system back up in the VM then do::

   apk add linux-firmware-amdgpu

then reboot it native, and it came up.

There is probably other missing firmware, but I can see how to fix it 
for myself.

That leaves two problems:

1. Why does the extended ISO not boot?  (I'll try to find out.)

2. How to build an Alpine that boots anywhere?  I can see how to do it 
by modifying setup-disk, but maybe there should be a way to tell 
setup-disk to do that.

Thanks!