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

Reply via email to