Bug 212135 - AE_AML_BUFFER_LIMIT, Field [DRQL] Dell T1700 A28 bios
Summary: AE_AML_BUFFER_LIMIT, Field [DRQL] Dell T1700 A28 bios
Status: CLOSED DOCUMENTED
Alias: None
Product: ACPI
Classification: Unclassified
Component: BIOS (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Zhang Rui
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-03-08 17:10 UTC by Michael Carney
Modified: 2021-05-28 17:21 UTC (History)
1 user (show)

See Also:
Kernel Version: 5.10
Subsystem:
Regression: No
Bisected commit-id:


Attachments
acpidump of Dell T1700 (A28) (344.11 KB, text/plain)
2021-03-08 17:10 UTC, Michael Carney
Details

Description Michael Carney 2021-03-08 17:10:20 UTC
Created attachment 295737 [details]
acpidump of Dell T1700 (A28)

Following error occurs:

[  +0.025989] ACPI BIOS Error (bug): AE_AML_BUFFER_LIMIT, Field [DRQL] at bit offset/length 136/8 exceeds size of target Buffer (128 bits) (20200925/dsopcode-198)
[  +0.000005] ACPI Error: Aborting method \_SB.PCI0.LPCB.SIO1.DSRS due to previous error (AE_AML_BUFFER_LIMIT) (20200925/psparse-529)
[  +0.000004] ACPI Error: Aborting method \_SB.PCI0.LPCB.UAR1._SRS due to previous error (AE_AML_BUFFER_LIMIT) (20200925/psparse-529)
[  +0.000005] serial 00:06: activation failed
[  +0.000005] PM: dpm_run_callback(): pnp_bus_resume+0x0/0x90 returns -5
[  +0.000001] PM: Device 00:06 failed to resume: error -5
Comment 1 Zhang Rui 2021-05-28 07:42:42 UTC
                    Name (CRS1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x00,               // Length
                            _Y17)
                        IRQNoFlags (_Y18)
                            {}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    })
...
                    CreateByteField (CRS1, \_SB.PCI0.LPCB.SIO1._Y17._LEN, LNA1)  // _LEN: Length
...
                    LNA1 = 0x08

The CRS1 layout is probably
offset  content
0       Tag Bits of the IO resource
1       Information of the IO resource
2~3     Range minimum base addr of the IO resource
4~5     Range maximum base addr of the IO resource
6       Base Alignment of the IO resource
7       length of the IO resrouce
8       Tag Bits of the IRQ resource
9       IRQ Mask Bits
10      IRQ Mask Bits
11      IRQ Information
12      Tag Bits of the DMA resource
13      DMA channel mask
14      Reserved for DMA resource

And later, in
                    Method (DSRS, 2, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x09, IRQL)
                        CreateByteField (Arg0, 0x11, DRQL)
                        CreateByteField (Arg0, 0x14, DMAC)
                        If ((Arg1 == Zero))
                        {
                            ENFG (0x0C)
                            STIO (0x6A, IOLO, IOHI, Zero)
                            SIRQ (Arg1, IRQL)
                            EXFG ()
                            DCNT (Arg1, One)
                        }
                    }

To me, it seems that there are some stupid mistakes made, hex values are used as the offset, instead of decimal values.

So this is an ACPI BIOS bug, which we can not fix in Linux kernel.
Please raise this to Dell instead.
Comment 2 Michael Carney 2021-05-28 17:21:49 UTC
I forwarded this bug to Dell support. Thanks for investigating it.

Note You need to log in before you can comment on or make changes to this bug.