Bug 43063

Summary: ACPI Error: Field [ROMI] Base+Offset+Width 0+24+1 is beyond end of region [VROM] (length 24) (20120320/exfldio-210)
Product: ACPI Reporter: Pawel Sikora (pluto)
Component: Config-TablesAssignee: acpi_config-tables
Status: CLOSED PATCH_ALREADY_AVAILABLE    
Severity: normal CC: alan, gianluca.cecchi, lenb, peter
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.4.0-rc1-00349-g314489b Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg

Description Pawel Sikora 2012-04-07 07:07:14 UTC
Created attachment 72841 [details]
dmesg

during booting the 3.4.0-rc1-00349-g314489b on my laptop
i observing acpi error in dmesg. full log attached.
Comment 1 Peter Wu 2012-06-02 13:16:34 UTC
Please attach the output of the `acpidump` command. Someone else with a similar problem on an Asus U43Jc: https://github.com/Bumblebee-Project/Bumblebee/issues/170. A copy from his error:

ACPI Error: Field [ROMI] Base+Offset+Width 0+24+1 is beyond end of region [VROM] (length 24) (20120320/exfldio-210)
ACPI Error: Method parse/execution failed [\_SB_.PCI0.RP00.VGA_._ROM] (Node ffff880131dee050), AE_AML_REGION_LIMIT (20120320/psparse-536)
failed to evaluate ROM got AE_AML_REGION_LIMIT

The \_SB.PCI0.RP00.VGA._ROM method from his DSDT:

        Method (_ROM, 2, NotSerialized)
        {
            Store (\_SB.NVOB, Local0) // read 32-bit field from SystemMemory
            Add (Arg0, Local0, Local0)
            ShiftLeft (Arg1, 0x03, Local1)
            Name (VBUF, Buffer (Arg1) {})
            OperationRegion (VROM, SystemMemory, Local0, Local1)
            Field (VROM, ByteAcc, NoLock, Preserve)
            {
                ROMI,   65536
            }

            Store (ROMI, VBUF)
            Return (VBUF)
        }
(the DSDT for N73SV seems the same)

Details from the ACPI spec v5 about _ROM (sect. B.3.3 _ROM (Get ROM Data)):

BIOS support.
Arguments: (2)
Arg0 – An Integer containing the offset of the display device ROM data
Arg1 – An Integer containing the size of the buffer to fill in (up to 4K).
Return Value:
A Buffer containing the requested ROM data

There haven't been any big changes in the nouveau_acpi code (last noticable update was on 17 December 2011, most recent code only initialized a variable, but it does not affect the ROM detection code), so it's possibly some change in the ACPI (acpica) subsystem.
Comment 2 Gianluca 2012-06-22 10:04:35 UTC
Mee too having this problem with an Asus laptop U36SD and the discrete gpu is an NVIDIA GeForce GT 520M with 1GB DDR3 VRAM
Using Fedora 17, up to kernel 3.3.7-1 I was able to use bumblebee and
bbswitch and then running optirun command (as I could do in F16).
No more with kernel 3.4. Tried 3.4.0-1.fc17.x86_64,
3.4.2-4.fc17.x86_64 and 3.4.3-1.fc17.x86_64.
I already opened a bug against F17:
https://bugzilla.redhat.com/show_bug.cgi?id=831136

dmesg output when using kenrel 3.4
[    2.643224] [drm] Initialized drm 1.1.0 20060810
[    2.644723] wmi: Mapper loaded
[    2.647064] MXM: GUID detected in BIOS
[    2.647107] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023ee2c510 (20120320/exresop-590)
[    2.647112] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for [OpcodeName unavailable] (20120320/dswexec-460)
[    2.647118] ACPI Error: Method parse/execution failed [\_SB_.PCI0.GFX0._DSM] (Node ffff88024386a4b0), AE_AML_OPERAND_TYPE (20120320/psparse-536)
[    2.647129] failed to evaluate _DSM: 12291
[    2.647229] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023ee2c510 (20120320/exresop-590)
[    2.647233] ACPI Exception: AE_AML_OPERAND_TYPE, While resolving operands for [OpcodeName unavailable] (20120320/dswexec-460)
[    2.647238] ACPI Error: Method parse/execution failed [\_SB_.PCI0.GFX0._DSM] (Node ffff88024386a4b0), AE_AML_OPERAND_TYPE (20120320/psparse-536)
[    2.647245] ACPI Error: Method parse/execution failed [\_SB_.PCI0.PEG0.GFX0._DSM] (Node ffff88024387f9b0), AE_AML_OPERAND_TYPE (20120320/psparse-536)
[    2.647253] failed to evaluate _DSM: 12291
[    2.647328] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG0.GFX0 handle
[    2.647366] nouveau 0000:01:00.0: power state changed by ACPI to D0
[    2.647371] nouveau 0000:01:00.0: power state changed by ACPI to D0
[    2.647376] nouveau 0000:01:00.0: enabling device (0000 -> 0003)
[    2.647903] [drm] nouveau 0000:01:00.0: Detected an NVd0 generation card (0x0d9100a1)
[    2.650194] [drm] nouveau 0000:01:00.0: acceleration disabled by default, pass noaccel=0 to force enable
[    2.650199] checking generic (b0000000 410000) vs hw (c0000000 10000000)
[    2.650201] checking generic (b0000000 410000) vs hw (d0000000 2000000)
[    2.657380] [drm] nouveau 0000:01:00.0: Checking PRAMIN for VBIOS
[    2.705503] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    2.705504] [drm] nouveau 0000:01:00.0: Checking PROM for VBIOS
[    2.705597] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    2.705610] [drm] nouveau 0000:01:00.0: Checking ACPI for VBIOS
[    2.705666] ACPI Error: Field [ROMI] Base+Offset+Width 0+24+1 is beyond end of region [VROM] (length 24) (20120320/exfldio-210)
[    2.705670] ACPI Error: Method parse/execution failed [\_SB_.PCI0.PEG0.GFX0._ROM] (Node ffff880243881398), AE_AML_REGION_LIMIT (20120320/psparse-536)
[    2.759759] failed to evaluate ROM got AE_AML_REGION_LIMIT
[    2.759761] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    2.759763] [drm] nouveau 0000:01:00.0: Checking PCIROM for VBIOS
[    2.759894] nouveau 0000:01:00.0: Invalid ROM contents
[    2.760356] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    2.760357] [drm] nouveau 0000:01:00.0: No valid VBIOS image found
Comment 3 Gianluca 2012-06-22 10:20:07 UTC
I already posted on January 2012 the dump for my laptop at
https://bugs.launchpad.net/lpbugreporter/+bug/752542/+attachment/2665591/+files/ASUSTeK_Computer_Inc.-U36SD.tar.gz
Comment 4 Gianluca 2012-07-23 12:42:36 UTC
Hello, any news on this?
I still get the same problem using fedora 17 and kernel 3.4.6-2.fc17.x86_64.
Or any more testing can I provide?

Using bbswitch 0.4.2 and bumblebee 3.0, at boot the discrete adapter is correctly disabled

Jul 23 14:00:43 ope46 kernel: [    6.805222] bbswitch: version 0.4.2
Jul 23 14:00:43 ope46 kernel: [    6.805233] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GF
X0
Jul 23 14:00:43 ope46 kernel: [    6.805244] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.PEG0
.GFX0
Jul 23 14:00:43 ope46 kernel: [    6.805371] bbswitch: detected an Optimus _DSM function
Jul 23 14:00:43 ope46 kernel: [    6.805377] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
Jul 23 14:00:43 ope46 kernel: [    6.812061] bbswitch: disabling discrete graphics
Jul 23 14:00:43 ope46 kernel: [    6.841173] pci 0000:01:00.0: power state changed by ACPI to D3
Jul 23 14:00:43 ope46 bumblebeed[674]: [INFO]/usr/sbin/bumblebeed 3.0 started
...

But as soon as I run 
sudo optirun glxgears

I got this
Jul 23 14:02:56 ope46 kernel: [  140.039345] bbswitch: enabling discrete graphics
Jul 23 14:02:56 ope46 kernel: [  140.417218] pci 0000:01:00.0: power state changed by ACPI to D0
Jul 23 14:02:56 ope46 kernel: [  140.427284] pci 0000:01:00.0: power state changed by ACPI to D0
Jul 23 14:02:56 ope46 kernel: [  140.427318] pci 0000:01:00.0: power state changed by ACPI to D0
Jul 23 14:02:56 ope46 kernel: [  140.427321] pci 0000:01:00.0: power state changed by ACPI to D0
Jul 23 14:02:56 ope46 bumblebeed[674]: [WARN]The PCI config space could not be written fully at offset 0x1; 0 bytes have been written; error: Resource temporarily unavailable[ERROR][XORG] (EE) [drm] failed to open device
Jul 23 14:02:56 ope46 bumblebeed[674]: [ERROR][XORG] (EE) No devices detected.
Jul 23 14:02:57 ope46 bumblebeed[674]: [ERROR]X did not start properly


In kernel 3.3.7 I have these lines that I don't get during boot in 3.4.6-2.fc17.x86_64

Jul 23 14:09:33 ope46 kernel: [    3.175932] [drm] nouveau 0000:01:00.0: ... appears to be valid
Jul 23 14:09:33 ope46 kernel: [    3.175944] [drm] nouveau 0000:01:00.0: BIT BIOS found
Jul 23 14:09:33 ope46 kernel: [    3.175952] [drm] nouveau 0000:01:00.0: Bios version 75.19.21.00
Jul 23 14:09:33 ope46 kernel: [    3.175961] [drm] nouveau 0000:01:00.0: TMDS table version 2.0
Jul 23 14:09:33 ope46 kernel: [    3.176914] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
Jul 23 14:09:33 ope46 kernel: [    3.176921] [drm] nouveau 0000:01:00.0: DCB version 4.0
Jul 23 14:09:33 ope46 kernel: [    3.176928] [drm] nouveau 0000:01:00.0: DCB outp 00: 02000300 00000000
Jul 23 14:09:33 ope46 kernel: [    3.176934] [drm] nouveau 0000:01:00.0: DCB conn 00: 00000000
Jul 23 14:09:33 ope46 kernel: [    3.176955] [drm] nouveau 0000:01:00.0: Adaptor not initialised, running VBIOS init tables.
Jul 23 14:09:33 ope46 kernel: [    3.176961] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x7263
Jul 23 14:09:33 ope46 kernel: [    3.207267] [drm] nouveau 0000:01:00.0: 0x7241: i2c wr fail: -5
Jul 23 14:09:33 ope46 kernel: [    3.209171] [drm] nouveau 0000:01:00.0: 0x7253: i2c rd fail: -5
Jul 23 14:09:33 ope46 kernel: [    3.269967] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x78D7
Jul 23 14:09:33 ope46 kernel: [    3.296982] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x8887
Jul 23 14:09:33 ope46 kernel: [    3.296983] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0x8888
Jul 23 14:09:33 ope46 kernel: [    3.297034] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0x8979
Jul 23 14:09:33 ope46 kernel: [    3.297035] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0x89DE
Jul 23 14:09:33 ope46 kernel: [    3.317858] [drm] nouveau 0000:01:00.0: 1 available performance level(s)
Jul 23 14:09:33 ope46 kernel: [    3.317869] [drm] nouveau 0000:01:00.0: 1: core 270MHz shader 540MHz memory 405MHz timing 5
Jul 23 14:09:33 ope46 kernel: [    3.317962] [drm] nouveau 0000:01:00.0: c: core 270MHz shader 540MHz memory 405MHz voltage 850mV
Jul 23 14:09:33 ope46 kernel: [    3.324848] [TTM] Zone  kernel: Available graphics memory: 4040386 kiB.
Jul 23 14:09:33 ope46 kernel: [    3.324850] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB.
Jul 23 14:09:33 ope46 kernel: [    3.324851] [TTM] Initializing pool allocator.
Jul 23 14:09:33 ope46 kernel: [    3.324854] [TTM] Initializing DMA pool allocator.
Jul 23 14:09:33 ope46 kernel: [    3.324863] [drm] nouveau 0000:01:00.0: Detected 1024MiB VRAM
Jul 23 14:09:33 ope46 kernel: [    3.326963] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
Jul 23 14:09:33 ope46 kernel: [    3.330200] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
Jul 23 14:09:33 ope46 kernel: [    3.330201] [drm] No driver support for vblank timestamp query.
Jul 23 14:09:33 ope46 kernel: [    3.330290] [drm] nouveau 0000:01:00.0: ACPI backlight interface available, not registering our own
Jul 23 14:09:33 ope46 kernel: [    3.344297] [drm] nouveau 0000:01:00.0: allocated 1024x768 fb: 0xe0000, bo ffff88023efd3000
Jul 23 14:09:33 ope46 kernel: [    3.344575] fb1: nouveaufb frame buffer device
Jul 23 14:09:33 ope46 kernel: [    3.344582] drm: registered panic notifier
Jul 23 14:09:33 ope46 kernel: [    3.344592] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0
Jul 23 14:09:33 ope46 kernel: [    3.562615] mtrr: no more MTRRs available
Jul 23 14:09:33 ope46 kernel: [    3.562622] [drm] MTRR allocation failed.  Graphics performance may suffer.
Jul 23 14:09:33 ope46 kernel: [    3.563325] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
Jul 23 14:09:33 ope46 kernel: [    3.563329] [drm] Driver supports precise vblank timestamp query.


Thanks in advance
Comment 5 Gianluca 2012-08-03 21:41:29 UTC
Finally for me on Fedora 17 the kernel 3.5.0-2.fc17.x86_64 is the first one after kernel-3.3.7-1.fc17.x86_64 where I can use my Nvidia again and run the command "sudo optirun glxgears" without errors.
Discrete card correctly disabled after optirun exits.

Thanks (possibly due to upstream changes in 3.5...)
Comment 6 Len Brown 2013-01-28 23:36:26 UTC
The bug was originally filed against this:

[    7.741281] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    7.741397] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    7.741890] [drm] nouveau 0000:01:00.0: Detected an NVc0 generation card (0x0c1a00a1)
[    7.756115] vga_switcheroo: enabled
[    7.756163] [drm] nouveau 0000:01:00.0: Checking PRAMIN for VBIOS
[    7.765891] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    7.765894] [drm] nouveau 0000:01:00.0: Checking PROM for VBIOS
[    7.765954] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    7.765957] [drm] nouveau 0000:01:00.0: Checking ACPI for VBIOS
[    7.766057] ACPI Error: Field [ROMI] Base+Offset+Width 0+24+1 is beyond end of region [VROM] (length 24) (20120320/exfldio-210)
[    7.766063] ACPI Error: Method parse/execution failed [\_SB_.PCI0.PEGR.GFX0._ROM] (Node ffff88033e47ce88), AE_AML_REGION_LIMIT (20120320/psparse-536)
[    7.766137] failed to evaluate ROM got AE_AML_REGION_LIMIT
[    7.766140] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    7.766141] [drm] nouveau 0000:01:00.0: Checking PCIROM for VBIOS
[    7.766396] nouveau 0000:01:00.0: Invalid ROM contents
[    7.766485] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[    7.766487] [drm] nouveau 0000:01:00.0: No valid VBIOS image found

(although the BIOS in the original system actually has multiple bugs).

From comment #5, it sounds like this problem is now gone,
and so we can close this bug.  Please re-open if that is not the case.