Bugzilla – Full Text Bug Listing |
Summary: | kernel-firmware-amdgpu breaks polaris10 | ||
---|---|---|---|
Product: | [openSUSE] openSUSE Tumbleweed | Reporter: | Vlastimil Babka <vbabka> |
Component: | Kernel | Assignee: | Daniel Molkentin <daniel> |
Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
Severity: | Normal | ||
Priority: | P5 - None | CC: | tiwai, vbabka |
Version: | Current | ||
Target Milestone: | --- | ||
Hardware: | Other | ||
OS: | Other | ||
Whiteboard: | |||
Found By: | --- | Services Priority: | |
Business Priority: | Blocker: | --- | |
Marketing QA Status: | --- | IT Deployment: | --- |
Bug Depends on: | |||
Bug Blocks: | 1161183, 1143959 | ||
Attachments: |
Workaround patch
Another cleanup |
Description
Vlastimil Babka
2019-08-22 08:08:40 UTC
The compressed firmware support is in the kernel firmware loader core, and should be irrelevant with each driver code. My wild guess is that the firmware is missing by some reason in initrd. Could you check whether it's missing or not? (In reply to Takashi Iwai from comment #1) > My wild guess is that the firmware is missing by some reason in initrd. > > Could you check whether it's missing or not? You're right, there's no lib/firmware in initrd at all. Dracut problem? Possibly. Are you running TW? i.e. with the updated dracut? Or, do you happen to have installed amdgpu-pro package? This used to break things at uninstallation. (In reply to Takashi Iwai from comment #3) > Possibly. Are you running TW? i.e. with the updated dracut? Yep Information for package dracut: ------------------------------- Repository : openSUSE-Tumbleweed-Oss Name : dracut Version : 049+git104.1244eed7-1.1 Arch : x86_64 Vendor : openSUSE Installed Size : 1.2 MiB Installed : Yes (automatically) Status : up-to-date > Or, do you happen to have installed amdgpu-pro package? This used to break > things at uninstallation. Doesn't seem so. OK, I'll try to install TW on a test machine and see whether it really works. From what I see in /usr/lib/dracut/dracut-init.sh it should work, even if unpacking: for _fw in $(modinfo -k $kernel -F firmware $1 2>/dev/null); do _found='' for _fwdir in $fw_dir; do [[ -d $_fwdir ]] || continue if [[ -f $_fwdir/$_fw ]]; then inst_simple "$_fwdir/$_fw" "/lib/firmware/$_fw" elif [[ -f $_fwdir/$_fw.xz ]]; then inst_simple "$_fwdir/$_fw.xz" "/lib/firmware/$_fw.xz" rm -f "${initdir}/lib/firmware/$_fw" unxz -f "${initdir}/lib/firmware/$_fw.xz" else continue fi _found=yes done if [[ $_found != yes ]]; then if ! [[ -d $(echo /sys/module/${_modname//-/_}|{ read a b; echo $a; }) ]]; then dinfo "Possible missing firmware \"${_fw}\" for kernel module" \ "\"${_modname}.ko\"" else dwarn "Possible missing firmware \"${_fw}\" for kernel module" \ "\"${_modname}.ko\"" fi fi done And I don't see those warnings Did installing kernel-firmware.rpm instead of kernel-firmware-amdgpu cure the problem? I'm wondering whether it's about the compressed file support in dracut or in a different part. (In reply to Takashi Iwai from comment #7) > Did installing kernel-firmware.rpm instead of kernel-firmware-amdgpu cure > the problem? I'm wondering whether it's about the compressed file support > in dracut or in a different part. Yes it did. FWIW unpacking the files installed from kernel-firmware-amdgpu manually also worked. I'm confused, I don't see install_kmod_with_fw() from /usr/lib/dracut/dracut-init.sh called anywhere. I have no idea how firmware files end up in the initrd. (In reply to Vlastimil Babka from comment #10) > I'm confused, I don't see install_kmod_with_fw() from > /usr/lib/dracut/dracut-init.sh called anywhere. I have no idea how firmware > files end up in the initrd. I suspect it's done by the .c program dracut-install, not the shell scripts: https://github.com/dracutdevs/dracut/blob/master/install/dracut-install.c#L1128 Indeed, thanks for catching this. Daniel, it seems that the recent dracut moved the complete code and broke the compressed firmware loading. The patch below is a quick bandaid fix. I built a test package in OBS home:tiwai:branches:Base:System/dracut repo. Vlastimil, could you check whether it works? Created attachment 815238 [details]
Workaround patch
Created attachment 815239 [details]
Another cleanup
(In reply to Takashi Iwai from comment #13) > The patch below is a quick bandaid fix. > > I built a test package in OBS home:tiwai:branches:Base:System/dracut repo. > Vlastimil, could you check whether it works? lsinitrd looks good (contains .xz files, while the bash version tried to unpack them, but that should be fine?) Thanks! (In reply to Vlastimil Babka from comment #16) > (In reply to Takashi Iwai from comment #13) > > The patch below is a quick bandaid fix. > > > > I built a test package in OBS home:tiwai:branches:Base:System/dracut repo. > > Vlastimil, could you check whether it works? > > lsinitrd looks good (contains .xz files, while the bash version tried to > unpack them, but that should be fine?) Thanks! Yes, the patch is intended to be as simple as possible, so it just copies the compressed firmware as-is. It'd be better to be expanded in initrd beforehand, but we can live with that for now. I submitted a PR to upstream: https://github.com/dracutdevs/dracut/pull/626 Daniel, please take a look. Starting from 5.3 kernel, the firmware package will be switched to the compressed format, so we'd have to fix this ASAP. Ping. It's a critical bug and needs an immediate fix before we move to 5.3 kernel. I just returned from vacation today. Patch looks fine to me as a bandaid fix, but we should definitely find a way to store the files uncompressed. (In reply to Daniel Molkentin from comment #21) > I just returned from vacation today. Patch looks fine to me as a bandaid > fix, but we should definitely find a way to store the files uncompressed. Right. And the same is true for *.ko files. Accepted upstream, backported and submitted to Factory as sr#726198. This is an autogenerated message for OBS integration: This bug (1146769) was mentioned in https://build.opensuse.org/request/show/726198 Factory / dracut |