Debugging ACPI on FreeBSD

2021-03-30
23 min read

The only OS besides Windows that is able to boot with ACPI enable on my laptop(Itronix GoBook-VR2) is FreeBSD. Sometimes it takes a reboot to make it work as it seems there is a problem on the ACPI tables for my current BIOS version, sadly is the latest one produced by the manufacturer (Ver 124). So I decided to try to fix this issue so booting this laptop, first we need to dump the asl code

acpidump -t -d > gendyn.asl

Then try to compile it to check what are the current issues

iasl gendyn.asl  

The result is :

gendyn.asl    672:         Processor (CPU0, 0x01, 0x00000410, 0x06){}
Warning  3168 -                         ^ Legacy Processor() keyword detected. Use Device() keyword instead.

gendyn.asl    673:         Processor (CPU1, 0x02, 0x00000410, 0x06){}
Warning  3168 -                         ^ Legacy Processor() keyword detected. Use Device() keyword instead.

gendyn.asl    704:     Method (_WAK, 1, NotSerialized)  // _WAK: Wake
Remark   2120 -                  ^ Control Method should be made Serialized due to creation of named objects within (\_WAK)

gendyn.asl    711:         OperationRegion (TPMR, SystemMemory, 0xFED40000, 0x5000)
Warning  3175 -                               ^ Static OperationRegion should be declared outside control method

gendyn.asl    711:         OperationRegion (TPMR, SystemMemory, 0xFED40000, 0x5000)
Remark   2173 -                               ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_WAK)

gendyn.asl    712:         Field (TPMR, AnyAcc, NoLock, Preserve)
Remark   2173 -                     ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_WAK)

gendyn.asl   1318:     Method (SCMP, 2, NotSerialized)
Remark   2120 -                  ^ Control Method should be made Serialized due to creation of named objects within (\SCMP)

gendyn.asl   1389:         Name (TMPF, Zero)
Remark   2173 -                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\GETF)

gendyn.asl   1551:             Method (WQAB, 1, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   1557:             Method (WMBA, 3, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   1557:             Method (WMBA, 3, NotSerialized)
Warning  3115 -                          ^ Not all control paths return a value (\_SB.AMW0.WMBA)

gendyn.asl   1572:             Method (WMBC, 3, NotSerialized)
Warning  3115 -                          ^ Not all control paths return a value (\_SB.AMW0.WMBC)

gendyn.asl   2465:             Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event, xx=0x00-0xFF
Warning  3115 -                          ^ Not all control paths return a value (\_SB.AMW0._WED)

gendyn.asl   2465:             Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event, xx=0x00-0xFF
Warning  3107 -                          ^ Reserved method must return a value (Integer/String/Buffer required for _WED)

gendyn.asl   2475:             Method (WQCA, 1, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   2480:             Method (WSCA, 2, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   2486:             Method (WMCB, 3, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   2486:             Method (WMCB, 3, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg1)

gendyn.asl   2493:                 CreateDWordField (B2ED, 0x04, OEBX)
Remark   2089 -                           Object is not referenced ^  (Name [OEBX] is within a method [WMCB])

gendyn.asl   2864:                             Sleep (0x07D0)
Remark   2159 -    Very long Sleep, greater than 1 second ^ 

gendyn.asl   2877:                         Sleep (0x07D0)
Remark   2159 -                                       ^ Very long Sleep, greater than 1 second

gendyn.asl   2998:             Method (DPTS, 1, NotSerialized)
Remark   2146 -                          ^ Method Argument is never used (Arg0)

gendyn.asl   3019:         Device (PCI0)
Warning  3073 -       Multiple types ^  (Device object requires either a _HID or _ADR, but not both)

gendyn.asl   3031:                 If (CondRefOf (_OSI, Local0))
Warning  3144 -          Method Local is set but never used ^  (Local0)

gendyn.asl   3054:             Method (_OSC, 5, NotSerialized)  // _OSC: Operating System Capabilities
Remark   2120 -                          ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0._OSC)

gendyn.asl   3054:             Method (_OSC, 5, NotSerialized)  // _OSC: Operating System Capabilities
Warning  3101 -                          ^ Reserved method has too many arguments (_OSC requires 4)

gendyn.asl   3058:                 Name (BUF1, Buffer (Local1){})
Remark   2173 -                            ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0._OSC)

gendyn.asl   3070:                             (CAPB & 0xFFFFFFFC)
Error    6114 -                                     ^ Result is not used, operator has no effect

gendyn.asl   3257:                     0x00000000,         // Length
Error    6043 -                                ^ Invalid combination of Length and Min/Max fixed flags

gendyn.asl   3829:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKA._CRS)

gendyn.asl   3831:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKA._CRS)

gendyn.asl   3894:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKB._CRS)

gendyn.asl   3896:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKB._CRS)

gendyn.asl   3959:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKC._CRS)

gendyn.asl   3961:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKC._CRS)

gendyn.asl   4024:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKD._CRS)

gendyn.asl   4026:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKD._CRS)

gendyn.asl   4089:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKE._CRS)

gendyn.asl   4091:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKE._CRS)

gendyn.asl   4154:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKF._CRS)

gendyn.asl   4156:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKF._CRS)

gendyn.asl   4219:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKG._CRS)

gendyn.asl   4221:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKG._CRS)

gendyn.asl   4284:                     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.LNKH._CRS)

gendyn.asl   4286:                         Name (BUF0, ResourceTemplate ()
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.LNKH._CRS)

gendyn.asl   4991:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR1._CRS)

gendyn.asl   5004:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR1._CRS._Y0F._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5006:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR1._CRS._Y0F._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5074:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR1._PRS)

gendyn.asl   5364:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR2._CRS)

gendyn.asl   5376:                             CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR2._CRS._Y11._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                            ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5378:                             CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR2._CRS._Y11._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                            ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5402:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR2._PRS)

gendyn.asl   5497:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR3._CRS)

gendyn.asl   5509:                             CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR3._CRS._Y13._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                            ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5511:                             CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR3._CRS._Y13._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                            ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5535:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR3._PRS)

gendyn.asl   5636:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR4._CRS)

gendyn.asl   5650:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR4._CRS._Y15._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5652:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.UAR4._CRS._Y15._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5677:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.UAR4._PRS)

gendyn.asl   5860:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.POUT._CRS)

gendyn.asl   5874:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.POUT._CRS._Y17._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5876:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.POUT._CRS._Y17._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   5901:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.POUT._PRS)

gendyn.asl   6060:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PBID._CRS)

gendyn.asl   6074:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PBID._CRS._Y19._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6076:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PBID._CRS._Y19._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6101:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PBID._PRS)

gendyn.asl   6262:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PEPP._CRS)

gendyn.asl   6276:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PEPP._CRS._Y1B._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6278:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PEPP._CRS._Y1B._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6303:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PEPP._PRS)

gendyn.asl   6435:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PECP._CRS)

gendyn.asl   6457:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PECP._CRS._Y1D._MIN, IOL0)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6459:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PECP._CRS._Y1D._MAX, IOL1)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6462:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PECP._CRS._Y1E._MIN, IOL2)  // _MIN: Minimum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6464:                                 CreateByteField (BUF0, \_SB.PCI0.LPC.SIO.PECP._CRS._Y1E._MAX, IOL3)  // _MAX: Maximum Base Address
Warning  3128 -                                                                ResourceTag larger than Field ^  (Size mismatch, Tag: 16 bits, Field: 8 bits)

gendyn.asl   6505:                             Name (BUF0, ResourceTemplate ()
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.SIO.PECP._PRS)

gendyn.asl   6929:                     Method (HKDS, 1, NotSerialized)
Warning  3115 -                                  ^ Not all control paths return a value (\_SB.PCI0.LPC.EC0.HKDS)

gendyn.asl   7331:                     Method (GBIF, 3, NotSerialized)
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.EC0.GBIF)

gendyn.asl   7376:                             Name (SERN, Buffer (0x06)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.EC0.GBIF)

gendyn.asl   7455:                                 Divide (Local1, 0x03E8, Local7, Local1)
Warning  3144 -                             Method Local is set but never used ^  (Local7)

gendyn.asl   7854:                     Method (HINF, 3, NotSerialized)
Remark   2146 -    Method Argument is never used ^  (Arg0)

gendyn.asl   7854:                     Method (HINF, 3, NotSerialized)
Remark   2146 -    Method Argument is never used ^  (Arg2)

gendyn.asl   7854:                     Method (HINF, 3, NotSerialized)
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.TPM.HINF)

gendyn.asl   7856:                         Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
Remark   2011 -      Use of compiler reserved name ^  (_T_0)

gendyn.asl   7893:                     Method (TPPI, 3, NotSerialized)
Remark   2146 -    Method Argument is never used ^  (Arg0)

gendyn.asl   7893:                     Method (TPPI, 3, NotSerialized)
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.LPC.TPM.TPPI)

gendyn.asl   7895:                         Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
Remark   2011 -      Use of compiler reserved name ^  (_T_0)

gendyn.asl   7912:                             Sleep (0x07D0)
Remark   2159 -    Very long Sleep, greater than 1 second ^ 

gendyn.asl   7915:                             Sleep (0x07D0)
Remark   2159 -    Very long Sleep, greater than 1 second ^ 

gendyn.asl   7918:                             Sleep (0x07D0)
Remark   2159 -    Very long Sleep, greater than 1 second ^ 

gendyn.asl   7923:                             Name (TCCP, Package (0x02)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.TPM.TPPI)

gendyn.asl   7937:                             Name (TLCR, Package (0x03)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.LPC.TPM.TPPI)

gendyn.asl   7950:                             Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler, x=0-9, A-Z
Remark   2011 -          Use of compiler reserved name ^  (_T_1)

gendyn.asl   7969:                     Method (SMOR, 3, NotSerialized)
Remark   2146 -    Method Argument is never used ^  (Arg0)

gendyn.asl   7969:                     Method (SMOR, 3, NotSerialized)
Remark   2146 -    Method Argument is never used ^  (Arg1)

gendyn.asl   8893:                 Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
Remark   2120 -                              ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.OVGA._DOD)

gendyn.asl   8923:                         Name (TMP1, Package (0x01)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.OVGA._DOD)

gendyn.asl   8933:                         Name (TMP2, Package (0x02)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.OVGA._DOD)

gendyn.asl   8945:                         Name (TMP3, Package (0x03)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.OVGA._DOD)

gendyn.asl   8959:                         Name (TMP4, Package (0x04)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.OVGA._DOD)

gendyn.asl   8975:                         Name (TMP5, Package (0x05)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.OVGA._DOD)

gendyn.asl   9802:                         Sleep (ASLP)
Remark   2159 -                                     ^ Very long Sleep, greater than 1 second

gendyn.asl   9812:                         Sleep (ASLP)
Remark   2159 -                                     ^ Very long Sleep, greater than 1 second

gendyn.asl   9875:                         Sleep (ASLP)
Remark   2159 -                                     ^ Very long Sleep, greater than 1 second

gendyn.asl  10016:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.IDEC.PRID._GTM)

gendyn.asl  10018:                         Name (PBUF, Buffer (0x14)
Remark   2173 -                                    ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.IDEC.PRID._GTM)

gendyn.asl  10089:                             CreateWordField (Arg1, 0x7E, W630)
Remark   2089 -                                      Object is not referenced ^  (Name [W630] is within a method [_STM])

gendyn.asl  10091:                             CreateWordField (Arg1, 0xB0, W880)
Remark   2089 -                                      Object is not referenced ^  (Name [W880] is within a method [_STM])

gendyn.asl  10133:                             CreateWordField (Arg2, 0x7E, W631)
Remark   2089 -                                      Object is not referenced ^  (Name [W631] is within a method [_STM])

gendyn.asl  10135:                             CreateWordField (Arg2, 0xB0, W881)
Remark   2089 -                                      Object is not referenced ^  (Name [W881] is within a method [_STM])

gendyn.asl  10182:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.IDEC.PRID.P_D0._GTF)

gendyn.asl  10184:                             Name (PIB0, Buffer (0x0E)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.IDEC.PRID.P_D0._GTF)

gendyn.asl  10247:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.IDEC.PRID.P_D1._GTF)

gendyn.asl  10249:                             Name (PIB1, Buffer (0x0E)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.IDEC.PRID.P_D1._GTF)

gendyn.asl  10346:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.PRID._GTM)

gendyn.asl  10346:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Warning  3115 -                                  ^ Not all control paths return a value (\_SB.PCI0.SATA.PRID._GTM)

gendyn.asl  10346:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Warning  3107 -                                  ^ Reserved method must return a value (Buffer required for _GTM)

gendyn.asl  10350:                             Name (PBUF, Buffer (0x14)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.PRID._GTM)

gendyn.asl  10417:                                 CreateWordField (Arg1, 0x7E, W630)
Remark   2089 -                                          Object is not referenced ^  (Name [W630] is within a method [_STM])

gendyn.asl  10419:                                 CreateWordField (Arg1, 0xB0, W880)
Remark   2089 -                                          Object is not referenced ^  (Name [W880] is within a method [_STM])

gendyn.asl  10420:                                 CreateWordField (Arg1, 0xBA, W930)
Remark   2089 -                                          Object is not referenced ^  (Name [W930] is within a method [_STM])

gendyn.asl  10458:                                 CreateWordField (Arg2, 0x7E, W631)
Remark   2089 -                                          Object is not referenced ^  (Name [W631] is within a method [_STM])

gendyn.asl  10460:                                 CreateWordField (Arg2, 0xB0, W881)
Remark   2089 -                                          Object is not referenced ^  (Name [W881] is within a method [_STM])

gendyn.asl  10461:                                 CreateWordField (Arg2, 0xBA, W931)
Remark   2089 -                                          Object is not referenced ^  (Name [W931] is within a method [_STM])

gendyn.asl  10505:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.PRID.P_D0._GTF)

gendyn.asl  10505:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 - Not all control paths return a value ^  (\_SB.PCI0.SATA.PRID.P_D0._GTF)

gendyn.asl  10505:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -  Reserved method must return a value ^  (Buffer required for _GTF)

gendyn.asl  10509:                                 Name (PIB0, Buffer (0x0E)
Remark   2173 -                                            ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.PRID.P_D0._GTF)

gendyn.asl  10573:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.PRID.P_D1._GTF)

gendyn.asl  10573:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 - Not all control paths return a value ^  (\_SB.PCI0.SATA.PRID.P_D1._GTF)

gendyn.asl  10573:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -  Reserved method must return a value ^  (Buffer required for _GTF)

gendyn.asl  10577:                                 Name (PIB1, Buffer (0x0E)
Remark   2173 -                                            ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.PRID.P_D1._GTF)

gendyn.asl  10643:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.SECD._GTM)

gendyn.asl  10643:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Warning  3115 -                                  ^ Not all control paths return a value (\_SB.PCI0.SATA.SECD._GTM)

gendyn.asl  10643:                     Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
Warning  3107 -                                  ^ Reserved method must return a value (Buffer required for _GTM)

gendyn.asl  10647:                             Name (SBUF, Buffer (0x14)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.SECD._GTM)

gendyn.asl  10721:                                 CreateWordField (Arg1, 0x7E, W630)
Remark   2089 -                                          Object is not referenced ^  (Name [W630] is within a method [_STM])

gendyn.asl  10723:                                 CreateWordField (Arg1, 0xB0, W880)
Remark   2089 -                                          Object is not referenced ^  (Name [W880] is within a method [_STM])

gendyn.asl  10765:                                 CreateWordField (Arg2, 0x7E, W631)
Remark   2089 -                                          Object is not referenced ^  (Name [W631] is within a method [_STM])

gendyn.asl  10767:                                 CreateWordField (Arg2, 0xB0, W881)
Remark   2089 -                                          Object is not referenced ^  (Name [W881] is within a method [_STM])

gendyn.asl  10815:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.SECD.S_D0._GTF)

gendyn.asl  10815:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 - Not all control paths return a value ^  (\_SB.PCI0.SATA.SECD.S_D0._GTF)

gendyn.asl  10815:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -  Reserved method must return a value ^  (Buffer required for _GTF)

gendyn.asl  10819:                                 Name (SIB0, Buffer (0x0E)
Remark   2173 -                                            ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.SECD.S_D0._GTF)

gendyn.asl  10883:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Remark   2120 -                                      ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.SECD.S_D1._GTF)

gendyn.asl  10883:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 - Not all control paths return a value ^  (\_SB.PCI0.SATA.SECD.S_D1._GTF)

gendyn.asl  10883:                         Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -  Reserved method must return a value ^  (Buffer required for _GTF)

gendyn.asl  10887:                                 Name (SIB1, Buffer (0x0E)
Remark   2173 -                                            ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.SECD.S_D1._GTF)

gendyn.asl  10953:                     Method (_SDD, 1, NotSerialized)  // _SDD: Set Device Data
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.PRT0._SDD)

gendyn.asl  10957:                             Name (GBU0, Buffer (0x07)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.PRT0._SDD)

gendyn.asl  10963:                             CreateByteField (GBU0, 0x02, GB02)
Remark   2089 -                                      Object is not referenced ^  (Name [GB02] is within a method [_SDD])

gendyn.asl  10964:                             CreateByteField (GBU0, 0x03, GB03)
Remark   2089 -                                      Object is not referenced ^  (Name [GB03] is within a method [_SDD])

gendyn.asl  10965:                             CreateByteField (GBU0, 0x04, GB04)
Remark   2089 -                                      Object is not referenced ^  (Name [GB04] is within a method [_SDD])

gendyn.asl  10966:                             CreateByteField (GBU0, 0x05, GB05)
Remark   2089 -                                      Object is not referenced ^  (Name [GB05] is within a method [_SDD])

gendyn.asl  10987:                     Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 -                                  ^ Not all control paths return a value (\_SB.PCI0.SATA.PRT0._GTF)

gendyn.asl  10987:                     Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -                                  ^ Reserved method must return a value (Buffer required for _GTF)

gendyn.asl  10999:                     Method (_SDD, 1, NotSerialized)  // _SDD: Set Device Data
Remark   2120 -                                  ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.SATA.PRT2._SDD)

gendyn.asl  11003:                             Name (GBU2, Buffer (0x07)
Remark   2173 -                                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.PRT2._SDD)

gendyn.asl  11009:                             CreateByteField (GBU2, 0x02, GB22)
Remark   2089 -                                      Object is not referenced ^  (Name [GB22] is within a method [_SDD])

gendyn.asl  11010:                             CreateByteField (GBU2, 0x03, GB23)
Remark   2089 -                                      Object is not referenced ^  (Name [GB23] is within a method [_SDD])

gendyn.asl  11011:                             CreateByteField (GBU2, 0x04, GB24)
Remark   2089 -                                      Object is not referenced ^  (Name [GB24] is within a method [_SDD])

gendyn.asl  11012:                             CreateByteField (GBU2, 0x05, GB25)
Remark   2089 -                                      Object is not referenced ^  (Name [GB25] is within a method [_SDD])

gendyn.asl  11033:                     Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3115 -                                  ^ Not all control paths return a value (\_SB.PCI0.SATA.PRT2._GTF)

gendyn.asl  11033:                     Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
Warning  3107 -                                  ^ Reserved method must return a value (Buffer required for _GTF)

gendyn.asl  11072:         Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
Remark   2120 -                      ^ Control Method should be made Serialized due to creation of named objects within (\_PR.CPU0._PDC)

gendyn.asl  11087:         Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
Remark   2120 -                      ^ Control Method should be made Serialized due to creation of named objects within (\_PR.CPU0._OSC)

gendyn.asl  11095:             Name (UID0, ToUUID ("4077a616-290c-47be-9ebd-d87058713953"))
Remark   2173 -                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU0._OSC)

gendyn.asl  11120:                     OperationRegion (IST0, SystemMemory, DerefOf (SSDT [One]), DerefOf (SSDT [0x02]))
Remark   2173 -                                           ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU0._OSC)

gendyn.asl  11131:                     OperationRegion (CST0, SystemMemory, DerefOf (SSDT [0x07]), DerefOf (SSDT [0x08]))
Remark   2173 -                                           ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU0._OSC)

gendyn.asl  11144:         Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
Remark   2120 -                      ^ Control Method should be made Serialized due to creation of named objects within (\_PR.CPU1._PDC)

gendyn.asl  11159:         Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
Remark   2120 -                      ^ Control Method should be made Serialized due to creation of named objects within (\_PR.CPU1._OSC)

gendyn.asl  11167:             Name (UID1, ToUUID ("4077a616-290c-47be-9ebd-d87058713953"))
Remark   2173 -                        ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU1._OSC)

gendyn.asl  11192:                     OperationRegion (IST1, SystemMemory, DerefOf (SSDT [0x04]), DerefOf (SSDT [0x05]))
Remark   2173 -                                           ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU1._OSC)

gendyn.asl  11203:                     OperationRegion (CST1, SystemMemory, DerefOf (SSDT [0x0A]), DerefOf (SSDT [0x0B]))
Remark   2173 -                                           ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_PR.CPU1._OSC)


Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20200430
Copyright (c) 2000 - 2020 Intel Corporation

ASL Input:     gendyn.asl -  430514 bytes   5026 keywords  11517 source lines

Compilation failed. 2 Errors, 46 Warnings, 129 Remarks
No AML files were generated due to compiler error(s)

I only care about the errors so I’ll try to fix them to see if that helps making boot to work consistenly.

gendyn.asl   3257:                     0x00000000,         // Length
Error    6043 -                                ^ Invalid combination of Length and Min/Max f

This one is easy, we need to calculate the difference between max and min, length should be :

Range Maximum - Range Minimum + 1 = Length 
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFED4FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length  --> This one must be fixed
                    0x00,, _Y0D, AddressRangeMemory, TypeStatic)

So we use bc:

obase=16;ibase=16
FED4FFFF  + 1 
FED50000

So the change should look like

                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFED4FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0xFED50000,         // Length
                    0x00,, _Y0D, AddressRangeMemory, TypeStatic)

Next one

gendyn.asl   3070:                             (CAPB & 0xFFFFFFFC)
Error    6114 -                                     ^ Result is not used, operator has no effect

Current code is

                While (Local0)
                {
                    Local2 = (Local1 * 0x04)
                    CreateDWordField (BUF1, Local2, CAPB)
                    If (Arg2)
                    {
                        If ((Local1 == Zero))
                        {
                            (CAPB & 0xFFFFFFFC)
                        }
                    }
                    Else
                    {
                    }

                    Local1++
                    Local0--

As the compiler says, it just dead code, so the new code should be:

                While (Local0)
                {
                    Local2 = (Local1 * 0x04)
                    CreateDWordField (BUF1, Local2, CAPB)
                    Local1++
                    Local0--
                }

After those changes now :

Compilation successful. 0 Errors, 46 Warnings, 130 Remarks, 85 Optimizations

Now according to the handbook we need to load this code instead of the bios one:

You can load this instead of your BIOS's buggy copy (which is still present in flash memory) by editing /boot/loader.conf as follows:

acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"

Be sure to copy your DSDT.aml to the /boot directory.

References:
https://forums.gentoo.org/viewtopic-t-954472.html
https://docs.freebsd.org/doc/6.1-RELEASE/usr/share/doc/handbook/acpi-debug.html
https://www.explorelinux.com/acpi-howto.html#fix_broken_dsdt