> >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
>
> [email protected]:/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.