nouveau kernel drive should not steal fb until after getting vbios
Submitted by Jeremy Huddleston Sequoia
Assigned to Nouveau Project
Description
Forked from bug #91779.
In some configurations, the fb will transition to nouveaufb, but then it will fail to initialize. In such cases, it is not possible to then transition back to the previous fb driver. Various forums suggest that users use nomodeset as a workaround for this issue, which works because nouveaufb will error out before stealing fb if KMS is disabled.
I suggest that the check for valid vbios be moved before fb is transitioned away from the previous driver to allow for a more graceful fallback in instances like this.
Here is the kernel logging that results from 'sudo modprobe nouveau debug=VBIOS=debug' on such a configuration:
Aug 29 23:19:45 wedge kernel: [ 294.071101] [drm] Initialized drm 1.1.0 20060810
Aug 29 23:19:45 wedge kernel: [ 294.127783] wmi: Mapper loaded
Aug 29 23:19:46 wedge kernel: [ 294.190330] checking generic (c0030000 710000) vs hw (c0000000 10000000)
Aug 29 23:19:46 wedge kernel: [ 294.190337] fb: conflicting fb hw usage nouveaufb vs EFI VGA - removing generic driver
Aug 29 23:19:46 wedge kernel: [ 294.190449] Console: switching to colour dummy device 80x25
Aug 29 23:19:46 wedge kernel: [ 294.191803] nouveau 0000:01:00.0: enabling device (0006 -> 0007)
Aug 29 23:19:46 wedge kernel: [ 294.192979] [drm] hdmi device not found 1 0 1
Aug 29 23:19:46 wedge kernel: [ 294.193257] nouveau [ DEVICE][0000:01:00.0] BOOT0 : 0x084700a2
Aug 29 23:19:46 wedge kernel: [ 294.193260] nouveau [ DEVICE][0000:01:00.0] Chipset: G84 (NV84)
Aug 29 23:19:46 wedge kernel: [ 294.193262] nouveau [ DEVICE][0000:01:00.0] Family : NV50
Aug 29 23:19:46 wedge kernel: [ 294.196982] nouveau [ VBIOS][0000:01:00.0] checking PRAMIN for image...
Aug 29 23:19:46 wedge kernel: [ 294.196990] nouveau [ VBIOS][0000:01:00.0] ... signature not found
Aug 29 23:19:46 wedge kernel: [ 294.196992] nouveau [ VBIOS][0000:01:00.0] checking PROM for image...
Aug 29 23:19:46 wedge kernel: [ 294.197010] nouveau [ VBIOS][0000:01:00.0] ... signature not found
Aug 29 23:19:46 wedge kernel: [ 294.197012] nouveau [ VBIOS][0000:01:00.0] checking ACPI for image...
Aug 29 23:19:46 wedge kernel: [ 294.197017] nouveau [ VBIOS][0000:01:00.0] ... signature not found
Aug 29 23:19:46 wedge kernel: [ 294.197019] nouveau [ VBIOS][0000:01:00.0] checking PCIROM for image...
Aug 29 23:19:46 wedge kernel: [ 294.197070] nouveau 0000:01:00.0: Invalid ROM contents
Aug 29 23:19:46 wedge kernel: [ 294.197084] nouveau [ VBIOS][0000:01:00.0] ... signature not found
Aug 29 23:19:46 wedge kernel: [ 294.197087] nouveau [ VBIOS][0000:01:00.0] checking PLATFORM for image...
Aug 29 23:19:46 wedge kernel: [ 294.197089] nouveau [ VBIOS][0000:01:00.0] ... signature not found
Aug 29 23:19:46 wedge kernel: [ 294.197091] nouveau E[ VBIOS][0000:01:00.0] unable to locate usable image
Aug 29 23:19:46 wedge kernel: [ 294.197095] nouveau E[ DEVICE][0000:01:00.0] failed to create 0x10000001, -22
Aug 29 23:19:46 wedge kernel: [ 294.197098] nouveau E[ DRM] failed to create 0x80000080, -22
Aug 29 23:19:46 wedge kernel: [ 294.197627] nouveau: probe of 0000:01:00.0 failed with error -22
The above was with Ubuntu 14.04.3 (Linux wedge 3.13.0-62-generic #102-Ubuntu SMP Tue Aug 11 14:29:36 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux) but I also see the same issue with Ubuntu 15.10 20150826 snapshot (linux 4.1 based).