> >Synopsis:    Kernel panic in malloc in acpi on boot
> >Category:    amd64
> >Environment:
>       System      : OpenBSD 7.5
>       Details     : OpenBSD 7.5 (GENERIC) #79: Wed Mar 20 15:33:49 MDT 2024
>                        
> dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC
> 
>       Architecture: OpenBSD.amd64
>       Machine     : amd64
> >Description:
> During boot the kernel panics:
> 
> panic: malloc: allocation too large, type = 33, size = 292057776136
> 
> This is during some ACPI stuff:

The size, in hex, is 0x4400000008, i.e. a merge 272 gigabytes.

The _OSC method in your dsdt disassembles as:

            Method (_OSC, 5, NotSerialized)  // _OSC: Operating System 
Capabilities
            {
                Local0 = Arg3
                Local1 = (Local0 * 0x04)
                Name (BUF1, Buffer (Local1){})
                BUF1 = Arg4
                Local1 = Zero
                Local2 = Zero
                While (Local0)
                {
                    Local2 = (Local1 * 0x04)
                    CreateDWordField (BUF1, Local2, CAPB)
                    If (Arg2)
                    {
                        If ((Local1 == Zero))
                        {
                            (CAPB & 0xFFFFFFFC)
                        }
                    }
                    Else
                    {
                    }

                    Local1++
                    Local0--
                }

                Return (BUF1) /* \_SB_.PCI0._OSC.BUF1 */
            }

... which his horribly broken since it incorrectly declares 5 arguments
insteod of 4.

On the OpenBSD side, we can fix the AML interpreter to avoid invoking
methods when we do not pass enough arguments.

You might want to see if a BIOS update is available for your machine in
the meantime.

Reply via email to