driver installation might not build initramfs then cause dark screen after switching to nvidia
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OEM Priority Project |
Fix Released
|
Critical
|
Alex Tu | ||
nvidia-graphics-drivers-384 (Ubuntu) |
Fix Released
|
High
|
Alberto Milone | ||
Xenial |
Fix Released
|
High
|
Alberto Milone | ||
Zesty |
Fix Released
|
High
|
Alberto Milone | ||
Artful |
Fix Released
|
High
|
Alberto Milone |
Bug Description
SRU Request:
[Impact]
When power saving mode is enabled, the initramfs will not be update, thus leading to a potential API mismatch between kernelspace and userspace.
[Test Case]
1) Make sure the nvidia packages are installed, and enable power saving mode:
sudo prime-select intel
2) Enable the -proposed repository, and install the new "nvidia-384"
3) Check that the initramfs is updated.
4) Restart your computer and see if the driver works correctly (you should be able to access the desktop session)
[Regression Potential]
Low, as updating the initramfs is always the (intended) default behaviour.
_______
Note: without fix be landed , nvidia driver online update could be failed.
nvidia-375.postinst not always build initramfs by default:
"
if [ "$ALTERNATIVE" = "/usr/lib/
# Update initramfs so that the blacklist ends up in the initramfs
if [ -x /usr/sbin/
"
it the case of user who are using intel then update driver from nvidia-375.20 to nvidia-375.82 will get screen dark after prime-select nvidia later.
syslog:
"
NVRM: loading NVIDIA UNIX x86_64 Kernel Module 375.20 Tue Nov 15 16:49:10 PST 2016 (using threaded interrupts)
......
NVRM: API mismatch: the client has the version 375.82, but
NVRM: this kernel module has the version 375.20. Please
NVRM: make sure that this kernel module and all NVIDIA driver
NVRM: components have the same version.
"
The root cause is the nvidia kernel module in initramfs not be updated in this case.
impacted issues:
LP: #1653592
CVE References
description: | updated |
tags: | added: xenial |
description: | updated |
Changed in nvidia-graphics-drivers-384 (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in nvidia-graphics-drivers-384 (Ubuntu Zesty): | |
status: | New → In Progress |
Changed in nvidia-graphics-drivers-384 (Ubuntu Artful): | |
status: | New → In Progress |
Changed in nvidia-graphics-drivers-384 (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in nvidia-graphics-drivers-384 (Ubuntu Zesty): | |
importance: | Undecided → High |
Changed in nvidia-graphics-drivers-384 (Ubuntu Artful): | |
importance: | Undecided → High |
Changed in nvidia-graphics-drivers-384 (Ubuntu Xenial): | |
assignee: | nobody → Alberto Milone (albertomilone) |
Changed in nvidia-graphics-drivers-384 (Ubuntu Zesty): | |
assignee: | nobody → Alberto Milone (albertomilone) |
Changed in nvidia-graphics-drivers-384 (Ubuntu Artful): | |
assignee: | nobody → Alberto Milone (albertomilone) |
description: | updated |
description: | updated |
Changed in oem-priority: | |
status: | Confirmed → Fix Released |
the patch I proposed would be to force update initramfs:
diff --git a/debian/ templates/ nvidia- graphics- drivers. postinst. in b/debian/ templates/ nvidia- graphics- drivers. postinst. in templates/ nvidia- graphics- drivers. postinst. in templates/ nvidia- graphics- drivers. postinst. in
NEWEST_ KERNEL= $(get_newest_ kernel "$KERNELS")
index 06242bb..e7933e3 100644
--- a/debian/
+++ b/debian/
@@ -208,15 +208,13 @@ case "$1" in
- if [ "$ALTERNATIVE" = "#LDSOCONF#" ]; then
- # Update initramfs so that the blacklist ends up in the initramfs
- if [ -x /usr/sbin/
- /usr/sbin/
-
- if [ -n "$NEWEST_KERNEL" ] && [ ${CURRENT_KERNEL} != ${NEWEST_KERNEL} ]; then
- # This can fail when dealing with a chroot see LP: #556653
- /usr/sbin/
- fi
+ # Update initramfs so that the blacklist ends up in the initramfs
+ if [ -x /usr/sbin/
+ /usr/sbin/
+
+ if [ -n "$NEWEST_KERNEL" ] && [ ${CURRENT_KERNEL} != ${NEWEST_KERNEL} ]; then
+ # This can fail when dealing with a chroot see LP: #556653
+ /usr/sbin/
fi
fi