Hi Ben, Since 3.19 the NV BIOS can no longer be loaded via ACPI. This breaks my HP laptop. Looking at the recent changes (ad4a3626 split out shadow methods) in the bios shadow code, I think this happens:
- nvbios_shadow loops over all possible bios sources - shadow_method - shadow_score - shadow_image tries to validate the image contents *before* loading it via ACPI calls - nvbios_imagen calls nv_ro16 on the bios object which tries to read 16 bytes directly from memory. Before the change, the code was: - mthd->shadow(bios); - which for ACPI calls nouveau_bios_shadow_acpi which doesn't try to validate the image mthd->score = nouveau_bios_score(bios, mthd->rw); which validates the image So shadowing always happened *before* trying to look at the bios data. The relevant log is below. Ortwin 3.18: Feb 15 11:28:50 localhost kernel: nouveau [ DEVICE][0000:01:00.0] BOOT0 : 0x0e63c0a1 Feb 15 11:28:50 localhost kernel: nouveau [ DEVICE][0000:01:00.0] Chipset: GK106 (NVE6) Feb 15 11:28:50 localhost kernel: nouveau [ DEVICE][0000:01:00.0] Family : NVE0 Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PRAMIN for image... Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] ... signature not found Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PROM for image... Feb 15 11:28:50 localhost kernel: fbcon: inteldrmfb (fb0) is primary device Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] ... signature not found Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking ACPI for image... Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] ... appears to be valid Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] using image from ACPI Feb 15 11:28:50 localhost kernel: nouveau [ VBIOS][0000:01:00.0] BIT signature found 3.19: Feb 15 11:30:40 localhost kernel: VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEGP.DGFX handle Feb 15 11:30:40 localhost kernel: nouveau 0000:01:00.0: enabling device (0004 -> 0007) Feb 15 11:30:40 localhost kernel: nouveau [ DEVICE][0000:01:00.0] BOOT0 : 0x0e63c0a1 Feb 15 11:30:40 localhost kernel: nouveau [ DEVICE][0000:01:00.0] Chipset: GK106 (NVE6) Feb 15 11:30:40 localhost kernel: nouveau [ DEVICE][0000:01:00.0] Family : NVE0 Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying ACPI... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: type 00, 65536 bytes Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: fetch failed Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying ACPI... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: type 00, 65536 bytes Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: fetch failed Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau E[ VBIOS][0000:01:00.0] ACPI invalid Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking (null) for image... Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PRAMIN for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying PRAMIN... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] ... not enabled Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PROM for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying PROM... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: ROM signature (ffff) unknown Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] image 0 invalid Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking ACPI for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying ACPI... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: type 00, 65536 bytes Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: fetch failed Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking ACPI for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying ACPI... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: type 00, 65536 bytes Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: fetch failed Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PCIROM for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying PCIROM... Feb 15 11:30:40 localhost kernel: nouveau 0000:01:00.0: Invalid ROM contents Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] 00000000: ROM signature (0000) unknown Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] image 0 invalid Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] scored 0 Feb 15 11:30:40 localhost kernel: nouveau [ VBIOS][0000:01:00.0] checking PLATFORM for image... Feb 15 11:30:40 localhost kernel: nouveau D[ VBIOS][0000:01:00.0] trying PLATFORM... Feb 15 11:30:40 localhost kernel: nouveau ![ VBIOS][0000:01:00.0] unable to locate usable image Feb 15 11:30:40 localhost kernel: nouveau E[ DEVICE][0000:01:00.0] failed to create 0x10000001, -22 Feb 15 11:30:40 localhost kernel: nouveau E[ DRM] failed to create 0x00000080, -22 Feb 15 11:30:40 localhost kernel: nouveau: probe of 0000:01:00.0 failed with error -22