Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gen_initramfs append_drm() excludes module dependencies #17

Closed
dywisor opened this issue Feb 19, 2014 · 3 comments
Closed

gen_initramfs append_drm() excludes module dependencies #17

dywisor opened this issue Feb 19, 2014 · 3 comments

Comments

@dywisor
Copy link

dywisor commented Feb 19, 2014

When booting a recent linux-sabayon kernel (3.13, 3.12), dmesg shows warnings about unknown symbols, on a VM with qxl as GPU (booting linux-sabayon-3.13.1, which uses an initramfs created by genkernel[-next]):

$ dmesg |grep -Ei -- 'linux version|systemd.*running|hypervisor|unknown|agp|drm|qxl'

[    0.000000] Linux version 3.13.0-sabayon (root@orion) (gcc version 4.7.3 (Gentoo Hardened 4.7.3-r1 p1.4, pie-0.5.5) ) #1 SMP Thu Jan 30 10:21:04 UTC 2014
[    0.000000] Hypervisor detected: KVM
[    2.277653] qxl: Unknown symbol ttm_bo_mmap (err 0)
[    2.277667] qxl: Unknown symbol drm_framebuffer_cleanup (err 0)
[    2.277672] qxl: Unknown symbol drm_global_item_unref (err 0)
[    2.277685] qxl: Unknown symbol drm_open (err 0)
[    2.277689] qxl: Unknown symbol drm_fb_helper_single_add_all_connectors (err 0)

... (more warnings, ~190 in total) ...

[    2.500432] qxl: Unknown symbol drm_release (err 0)
[    4.887878] systemd[1]: systemd 204 running in system mode. (+PAM +LIBWRAP -AUDIT -SELINUX +IMA -SYSVINIT +LIBCRYPTSETUP -GCRYPT +ACL +XZ)
[    5.274339] Linux agpgart interface v0.103
[    5.298204] [drm] Initialized drm 1.1.0 20060810
[    5.319833] [drm] Device Version 0.0
[    5.319835] [drm] Compression level 0 log level 0
[    5.319836] [drm] Currently using mode #0, list at 0x488
[    5.319837] [drm] 12286 io pages at offset 0x1000000
[    5.319838] [drm] 16777216 byte draw area at offset 0x0
[    5.319839] [drm] RAM header offset: 0x3ffe000
[    5.319839] [drm] rom modes offset 0x488 for 128 modes
[    5.322301] [drm] qxl: 16M of VRAM memory size
[    5.322301] [drm] qxl: 63M of IO pages memory ready (VRAM domain)
[    5.322302] [drm] qxl: 64M of Surface memory size
[    5.326306] [drm] main mem slot 1 [f4000000,3ffe000]
[    5.326309] [drm] surface mem slot 2 [f8000000,4000000]
[    5.329526] [drm] fb mappable at 0xF4000000, size 3145728
[    5.329528] [drm] fb: depth 24, pitch 4096, width 1024, height 768
[    5.329531] fb: conflicting fb hw usage qxldrmfb vs VESA VGA - removing generic driver
[    5.330533] fbcon: qxldrmfb (fb0) is primary device
[    5.400464] qxl 0000:00:02.0: fb0: qxldrmfb frame buffer device
[    5.400465] qxl 0000:00:02.0: registered panic notifier
[    5.400470] [drm] Initialized qxl 0.1.0 20120117 for 0000:00:02.0 on minor 0

Full dmesg output here.

Looking at the timestamps, qxl doesn't load properly while in initramfs but succeeds later on. Examining qxl's dependencies and the list of modules included in the initramfs (here), it seems that some modules are missing (agpgart.ko in this case).

This happens for other drm drivers as well, for example i915 (see dmesg from another user running linux-sabayon-3.12.x on real hardware). Despite these warnings, the system boots up fine.

As I understand it, this is caused by append_drm() in gen_initramfs.sh, specifically in line 812

mod=$(find "${drm_path}" -name "${i}${MOD_EXT}" 2>/dev/null| head -n 1)

where modules are looked up in $drm_path and thus agpgart (kernel/drivers/char/agp/agpgart.ko) cannot be found. append_drm() is genkernel-next-only and this issue(?) is probably not limited to sys-kernel/linux-sabayon's initramfs, which is why I'm posting it here.

Are these module deps excluded on purpose or should the line above changed to

mod=$(find ./lib/modules/${KV} -name "${i}${MOD_EXT}" 2>/dev/null| head -n 1)

(similar to append_modules(); assuming that $KV is set)?

@lxnay
Copy link
Member

lxnay commented Feb 21, 2014

Great report. Much appreciated.
I guess that we should change line 812 as you proposed.
Is there anything else that should be changed to fix the warnings?
Let me know if you would like to send a pull request or have me fix the code accordingly to this bug.

@dywisor
Copy link
Author

dywisor commented Feb 21, 2014

Changing this line should be sufficient (can't test it right now). The initramfs is cleaned up (starting at line line 1015), so modules imported by both append_modules() and append_drm()) are not an issue.
If it's just this line, then a pull request doesn't make much sense ;)

lxnay pushed a commit that referenced this issue Feb 23, 2014
After generating the module dependencies for drm drivers, we
should pick up all the modules by looking at the whole kernel
modules directory path and not just at drivers/drm.

This has been reported in GitHub issue #17 for genkernel-next.
@lxnay
Copy link
Member

lxnay commented Feb 23, 2014

Fixed in commit c90b340

@lxnay lxnay closed this as completed Feb 23, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants