From 283ee2b9559e5c39957eb07f916418d3dda3fcf5 Mon Sep 17 00:00:00 2001
From: Sascha Wildner <saw@online.de>
Date: Thu, 2 Oct 2025 22:07:34 +0200
Subject: [PATCH 09/11] Upgrade ACPICA from 20211217 to 20250807.

---
 sys/conf/files                                |    1 +
 sys/contrib/dev/acpica/changes.txt            |  327 +++-
 .../dev/acpica/generate/release/build.sh      |    2 +-
 .../dev/acpica/generate/unix/Makefile.config  |   16 +-
 .../acpica/generate/unix/acpidump/Makefile    |    1 +
 .../generate/unix/acpiexamples/Makefile       |    1 +
 .../acpica/generate/unix/acpiexec/Makefile    |    3 +
 .../dev/acpica/generate/unix/iasl/Makefile    |   23 +-
 .../dev/acpica/source/common/acfileio.c       |  133 +-
 .../dev/acpica/source/common/acgetline.c      |    2 +-
 sys/contrib/dev/acpica/source/common/adfile.c |    2 +-
 .../dev/acpica/source/common/adisasm.c        |   21 +-
 sys/contrib/dev/acpica/source/common/adwalk.c |    2 +-
 sys/contrib/dev/acpica/source/common/ahids.c  |    2 +-
 .../dev/acpica/source/common/ahpredef.c       |    3 +-
 .../dev/acpica/source/common/ahtable.c        |   11 +-
 .../dev/acpica/source/common/ahuuids.c        |    5 +-
 .../dev/acpica/source/common/cmfsize.c        |    2 +-
 .../dev/acpica/source/common/dmextern.c       |   10 +-
 .../dev/acpica/source/common/dmrestag.c       |   13 +-
 .../dev/acpica/source/common/dmswitch.c       |    2 +-
 .../dev/acpica/source/common/dmtable.c        |  465 +++--
 .../dev/acpica/source/common/dmtables.c       |   18 +-
 .../dev/acpica/source/common/dmtbdump.c       |   22 +-
 .../dev/acpica/source/common/dmtbdump1.c      |  783 +++++++-
 .../dev/acpica/source/common/dmtbdump2.c      | 1293 ++++++++-----
 .../dev/acpica/source/common/dmtbdump3.c      |   10 +-
 .../dev/acpica/source/common/dmtbinfo.c       |    2 +-
 .../dev/acpica/source/common/dmtbinfo1.c      |  602 +++++-
 .../dev/acpica/source/common/dmtbinfo2.c      |  883 ++++++---
 .../dev/acpica/source/common/dmtbinfo3.c      |   42 +-
 sys/contrib/dev/acpica/source/common/getopt.c |    2 +-
 .../dev/acpica/source/compiler/aslallocate.c  |    8 +-
 .../dev/acpica/source/compiler/aslanalyze.c   |   18 +-
 .../dev/acpica/source/compiler/aslascii.c     |    2 +-
 .../dev/acpica/source/compiler/aslbtypes.c    |    5 +-
 .../dev/acpica/source/compiler/aslcache.c     |    5 +-
 .../dev/acpica/source/compiler/aslcodegen.c   |   77 +-
 .../dev/acpica/source/compiler/aslcompile.c   |   35 +-
 .../dev/acpica/source/compiler/aslcompiler.h  |   18 +-
 .../dev/acpica/source/compiler/aslcompiler.l  |   17 +-
 .../dev/acpica/source/compiler/aslcstyle.y    |    2 +-
 .../dev/acpica/source/compiler/asldebug.c     |    2 +-
 .../dev/acpica/source/compiler/asldefine.h    |    4 +-
 .../dev/acpica/source/compiler/aslerror.c     |    4 +-
 .../dev/acpica/source/compiler/aslexternal.c  |    2 +-
 .../dev/acpica/source/compiler/aslfileio.c    |    2 +-
 .../dev/acpica/source/compiler/aslfiles.c     |    6 +-
 .../dev/acpica/source/compiler/aslfold.c      |    2 +-
 .../dev/acpica/source/compiler/aslglobal.h    |    3 +-
 .../dev/acpica/source/compiler/aslhelp.c      |    4 +-
 .../dev/acpica/source/compiler/aslhelpers.y   |    2 +-
 .../dev/acpica/source/compiler/aslhex.c       |    2 +-
 .../dev/acpica/source/compiler/aslkeywords.y  |   13 +-
 .../dev/acpica/source/compiler/asllength.c    |    2 +-
 .../dev/acpica/source/compiler/asllisting.c   |    2 +-
 .../dev/acpica/source/compiler/asllistsup.c   |    2 +-
 .../dev/acpica/source/compiler/aslload.c      |    2 +-
 .../dev/acpica/source/compiler/asllookup.c    |    2 +-
 .../dev/acpica/source/compiler/aslmain.c      |    4 +-
 .../dev/acpica/source/compiler/aslmap.c       |   15 +-
 .../dev/acpica/source/compiler/aslmapenter.c  |    2 +-
 .../dev/acpica/source/compiler/aslmapoutput.c |    2 +-
 .../dev/acpica/source/compiler/aslmaputils.c  |    2 +-
 .../dev/acpica/source/compiler/aslmessages.c  |    5 +-
 .../dev/acpica/source/compiler/aslmessages.h  |    2 +-
 .../dev/acpica/source/compiler/aslmethod.c    |    8 +-
 .../dev/acpica/source/compiler/aslnamesp.c    |    2 +-
 .../dev/acpica/source/compiler/asloffset.c    |    2 +-
 .../dev/acpica/source/compiler/aslopcodes.c   |    2 +-
 .../dev/acpica/source/compiler/asloperands.c  |    8 +-
 .../dev/acpica/source/compiler/aslopt.c       |    2 +-
 .../dev/acpica/source/compiler/asloptions.c   |   39 +-
 .../dev/acpica/source/compiler/aslparseop.c   |    8 +-
 .../dev/acpica/source/compiler/aslparser.y    |    4 +-
 .../dev/acpica/source/compiler/aslpld.c       |    2 +-
 .../dev/acpica/source/compiler/aslpredef.c    |    4 +-
 .../dev/acpica/source/compiler/aslprepkg.c    |    2 +-
 .../dev/acpica/source/compiler/aslprimaries.y |    4 +-
 .../dev/acpica/source/compiler/aslprintf.c    |    6 +-
 .../dev/acpica/source/compiler/aslprune.c     |    2 +-
 .../dev/acpica/source/compiler/aslresource.c  |   23 +-
 .../dev/acpica/source/compiler/aslresources.y |   63 +-
 .../dev/acpica/source/compiler/aslrestype1.c  |    2 +-
 .../dev/acpica/source/compiler/aslrestype1i.c |    2 +-
 .../dev/acpica/source/compiler/aslrestype2.c  |    2 +-
 .../dev/acpica/source/compiler/aslrestype2d.c |  159 +-
 .../dev/acpica/source/compiler/aslrestype2e.c |    2 +-
 .../dev/acpica/source/compiler/aslrestype2q.c |  158 +-
 .../dev/acpica/source/compiler/aslrestype2s.c |  131 +-
 .../dev/acpica/source/compiler/aslrestype2w.c |  158 +-
 .../dev/acpica/source/compiler/aslrules.y     |    8 +-
 .../dev/acpica/source/compiler/aslstartup.c   |    4 +-
 .../dev/acpica/source/compiler/aslstubs.c     |    2 +-
 .../dev/acpica/source/compiler/aslsupport.l   |    4 +-
 .../dev/acpica/source/compiler/aslsupport.y   |    2 +-
 .../dev/acpica/source/compiler/asltokens.y    |   11 +-
 .../dev/acpica/source/compiler/asltransform.c |    2 +-
 .../dev/acpica/source/compiler/asltree.c      |    5 +-
 .../dev/acpica/source/compiler/asltypes.h     |    4 +-
 .../dev/acpica/source/compiler/asltypes.y     |   10 +-
 .../dev/acpica/source/compiler/aslutils.c     |    8 +-
 .../dev/acpica/source/compiler/asluuid.c      |    2 +-
 .../dev/acpica/source/compiler/aslwalks.c     |    2 +-
 .../dev/acpica/source/compiler/aslxref.c      |    2 +-
 .../dev/acpica/source/compiler/aslxrefout.c   |    2 +-
 .../dev/acpica/source/compiler/cvcompiler.c   |    2 +-
 .../dev/acpica/source/compiler/cvdisasm.c     |    2 +-
 .../dev/acpica/source/compiler/cvparser.c     |    2 +-
 .../dev/acpica/source/compiler/dtcompile.c    |   44 +-
 .../dev/acpica/source/compiler/dtcompiler.h   |   53 +-
 .../acpica/source/compiler/dtcompilerparser.l |    2 +-
 .../acpica/source/compiler/dtcompilerparser.y |    2 +-
 .../dev/acpica/source/compiler/dtexpress.c    |    7 +-
 .../dev/acpica/source/compiler/dtfield.c      |   12 +-
 sys/contrib/dev/acpica/source/compiler/dtio.c |   10 +-
 .../dev/acpica/source/compiler/dtparser.l     |    2 +-
 .../dev/acpica/source/compiler/dtparser.y     |    2 +-
 .../dev/acpica/source/compiler/dtsubtable.c   |    2 +-
 .../dev/acpica/source/compiler/dttable.c      |    2 +-
 .../dev/acpica/source/compiler/dttable1.c     | 1204 +++++++++++-
 .../dev/acpica/source/compiler/dttable2.c     | 1080 ++++++-----
 .../dev/acpica/source/compiler/dttemplate.c   |   26 +-
 .../dev/acpica/source/compiler/dttemplate.h   |  837 +++++++--
 .../dev/acpica/source/compiler/dtutils.c      |   48 +-
 .../dev/acpica/source/compiler/preprocess.h   |   11 +-
 .../dev/acpica/source/compiler/prexpress.c    |    2 +-
 .../dev/acpica/source/compiler/prmacros.c     |   58 +-
 .../dev/acpica/source/compiler/prparser.l     |    2 +-
 .../dev/acpica/source/compiler/prparser.y     |    2 +-
 .../dev/acpica/source/compiler/prscan.c       |    9 +-
 .../dev/acpica/source/compiler/prutils.c      |  264 ++-
 .../source/components/debugger/dbcmds.c       |   60 +-
 .../source/components/debugger/dbconvert.c    |    4 +-
 .../source/components/debugger/dbdisply.c     |    2 +-
 .../source/components/debugger/dbexec.c       |    2 +-
 .../source/components/debugger/dbfileio.c     |    2 +-
 .../source/components/debugger/dbhistry.c     |    2 +-
 .../source/components/debugger/dbinput.c      |   10 +-
 .../source/components/debugger/dbmethod.c     |    2 +-
 .../source/components/debugger/dbnames.c      |   12 +-
 .../source/components/debugger/dbobject.c     |    2 +-
 .../source/components/debugger/dbstats.c      |    2 +-
 .../source/components/debugger/dbtest.c       |    2 +-
 .../source/components/debugger/dbutils.c      |    2 +-
 .../source/components/debugger/dbxface.c      |    2 +-
 .../source/components/disassembler/dmbuffer.c |    2 +-
 .../source/components/disassembler/dmcstyle.c |    2 +-
 .../components/disassembler/dmdeferred.c      |    2 +-
 .../source/components/disassembler/dmnames.c  |    2 +-
 .../source/components/disassembler/dmopcode.c |    2 +-
 .../source/components/disassembler/dmresrc.c  |    3 +-
 .../source/components/disassembler/dmresrcl.c |    2 +-
 .../components/disassembler/dmresrcl2.c       |   44 +-
 .../source/components/disassembler/dmresrcs.c |    2 +-
 .../source/components/disassembler/dmutils.c  |    2 +-
 .../source/components/disassembler/dmwalk.c   |   14 +-
 .../source/components/dispatcher/dsargs.c     |    2 +-
 .../source/components/dispatcher/dscontrol.c  |    2 +-
 .../source/components/dispatcher/dsdebug.c    |    2 +-
 .../source/components/dispatcher/dsfield.c    |    2 +-
 .../source/components/dispatcher/dsinit.c     |    2 +-
 .../source/components/dispatcher/dsmethod.c   |   41 +-
 .../source/components/dispatcher/dsmthdat.c   |    3 +-
 .../source/components/dispatcher/dsobject.c   |    2 +-
 .../source/components/dispatcher/dsopcode.c   |    2 +-
 .../source/components/dispatcher/dspkginit.c  |    2 +-
 .../source/components/dispatcher/dsutils.c    |   11 +-
 .../source/components/dispatcher/dswexec.c    |   10 +-
 .../source/components/dispatcher/dswload.c    |    2 +-
 .../source/components/dispatcher/dswload2.c   |    2 +-
 .../source/components/dispatcher/dswscope.c   |    2 +-
 .../source/components/dispatcher/dswstate.c   |   15 +-
 .../acpica/source/components/events/evevent.c |    2 +-
 .../acpica/source/components/events/evglock.c |    7 +-
 .../acpica/source/components/events/evgpe.c   |    2 +-
 .../source/components/events/evgpeblk.c       |    2 +-
 .../source/components/events/evgpeinit.c      |    3 +-
 .../source/components/events/evgpeutil.c      |    2 +-
 .../source/components/events/evhandler.c      |    2 +-
 .../acpica/source/components/events/evmisc.c  |    2 +-
 .../source/components/events/evregion.c       |   24 +-
 .../source/components/events/evrgnini.c       |    2 +-
 .../acpica/source/components/events/evsci.c   |    2 +-
 .../acpica/source/components/events/evxface.c |    2 +-
 .../source/components/events/evxfevnt.c       |    2 +-
 .../acpica/source/components/events/evxfgpe.c |    4 +-
 .../source/components/events/evxfregn.c       |  104 +-
 .../source/components/executer/exconcat.c     |    2 +-
 .../source/components/executer/exconfig.c     |   61 +-
 .../source/components/executer/exconvrt.c     |   60 +-
 .../source/components/executer/excreate.c     |    2 +-
 .../source/components/executer/exdebug.c      |    2 +-
 .../source/components/executer/exdump.c       |    2 +-
 .../source/components/executer/exfield.c      |    8 +-
 .../source/components/executer/exfldio.c      |    4 +-
 .../source/components/executer/exmisc.c       |    2 +-
 .../source/components/executer/exmutex.c      |    2 +-
 .../source/components/executer/exnames.c      |    2 +-
 .../source/components/executer/exoparg1.c     |   22 +-
 .../source/components/executer/exoparg2.c     |    2 +-
 .../source/components/executer/exoparg3.c     |    2 +-
 .../source/components/executer/exoparg6.c     |    2 +-
 .../source/components/executer/exprep.c       |    6 +-
 .../source/components/executer/exregion.c     |   25 +-
 .../source/components/executer/exresnte.c     |    2 +-
 .../source/components/executer/exresolv.c     |    2 +-
 .../source/components/executer/exresop.c      |    2 +-
 .../source/components/executer/exserial.c     |   17 +-
 .../source/components/executer/exstore.c      |    2 +-
 .../source/components/executer/exstoren.c     |    2 +-
 .../source/components/executer/exstorob.c     |    2 +-
 .../source/components/executer/exsystem.c     |   31 +-
 .../source/components/executer/extrace.c      |   68 +-
 .../source/components/executer/exutils.c      |    2 +-
 .../source/components/hardware/hwacpi.c       |    2 +-
 .../source/components/hardware/hwesleep.c     |    2 +-
 .../acpica/source/components/hardware/hwgpe.c |    2 +-
 .../acpica/source/components/hardware/hwpci.c |    2 +-
 .../source/components/hardware/hwregs.c       |    4 +-
 .../source/components/hardware/hwsleep.c      |    2 +-
 .../source/components/hardware/hwtimer.c      |    2 +-
 .../source/components/hardware/hwvalid.c      |   10 +-
 .../source/components/hardware/hwxface.c      |    2 +-
 .../source/components/hardware/hwxfsleep.c    |   17 +-
 .../source/components/namespace/nsaccess.c    |    2 +-
 .../source/components/namespace/nsalloc.c     |    2 +-
 .../source/components/namespace/nsarguments.c |    2 +-
 .../source/components/namespace/nsconvert.c   |    2 +-
 .../source/components/namespace/nsdump.c      |    2 +-
 .../source/components/namespace/nsdumpdv.c    |    2 +-
 .../source/components/namespace/nseval.c      |    2 +-
 .../source/components/namespace/nsinit.c      |    2 +-
 .../source/components/namespace/nsload.c      |    2 +-
 .../source/components/namespace/nsnames.c     |    4 +-
 .../source/components/namespace/nsobject.c    |    2 +-
 .../source/components/namespace/nsparse.c     |    2 +-
 .../source/components/namespace/nspredef.c    |    2 +-
 .../source/components/namespace/nsprepkg.c    |    2 +-
 .../source/components/namespace/nsrepair.c    |   16 +-
 .../source/components/namespace/nsrepair2.c   |   13 +-
 .../source/components/namespace/nssearch.c    |    2 +-
 .../source/components/namespace/nsutils.c     |    4 +-
 .../source/components/namespace/nswalk.c      |    6 +-
 .../source/components/namespace/nsxfeval.c    |    2 +-
 .../source/components/namespace/nsxfname.c    |    4 +-
 .../source/components/namespace/nsxfobj.c     |    2 +-
 .../acpica/source/components/parser/psargs.c  |   58 +-
 .../acpica/source/components/parser/psloop.c  |    2 +-
 .../source/components/parser/psobject.c       |   46 +-
 .../source/components/parser/psopcode.c       |    6 +-
 .../source/components/parser/psopinfo.c       |    8 +-
 .../acpica/source/components/parser/psparse.c |    2 +-
 .../acpica/source/components/parser/psscope.c |    2 +-
 .../acpica/source/components/parser/pstree.c  |    2 +-
 .../acpica/source/components/parser/psutils.c |    2 +-
 .../acpica/source/components/parser/pswalk.c  |    2 +-
 .../acpica/source/components/parser/psxface.c |    2 +-
 .../source/components/resources/rsaddr.c      |    9 +-
 .../source/components/resources/rscalc.c      |   18 +-
 .../source/components/resources/rscreate.c    |    2 +-
 .../source/components/resources/rsdump.c      |    5 +-
 .../source/components/resources/rsdumpinfo.c  |   13 +-
 .../source/components/resources/rsinfo.c      |    7 +-
 .../acpica/source/components/resources/rsio.c |    2 +-
 .../source/components/resources/rsirq.c       |    2 +-
 .../source/components/resources/rslist.c      |    2 +-
 .../source/components/resources/rsmemory.c    |    2 +-
 .../source/components/resources/rsmisc.c      |   11 +-
 .../source/components/resources/rsserial.c    |   46 +-
 .../source/components/resources/rsutils.c     |    2 +-
 .../source/components/resources/rsxface.c     |    2 +-
 .../acpica/source/components/tables/tbdata.c  |    4 +-
 .../acpica/source/components/tables/tbfadt.c  |   33 +-
 .../acpica/source/components/tables/tbfind.c  |    6 +-
 .../source/components/tables/tbinstal.c       |    2 +-
 .../acpica/source/components/tables/tbprint.c |  101 +-
 .../acpica/source/components/tables/tbutils.c |   21 +-
 .../acpica/source/components/tables/tbxface.c |    2 +-
 .../source/components/tables/tbxfload.c       |    2 +-
 .../source/components/tables/tbxfroot.c       |   34 +-
 .../source/components/utilities/utaddress.c   |    2 +-
 .../source/components/utilities/utalloc.c     |    2 +-
 .../source/components/utilities/utascii.c     |    2 +-
 .../source/components/utilities/utbuffer.c    |    2 +-
 .../source/components/utilities/utcache.c     |    6 +-
 .../source/components/utilities/utcksum.c     |  335 ++++
 .../source/components/utilities/utclib.c      |    2 +-
 .../source/components/utilities/utcopy.c      |    2 +-
 .../source/components/utilities/utdebug.c     |   12 +-
 .../source/components/utilities/utdecode.c    |    2 +-
 .../source/components/utilities/utdelete.c    |    8 +-
 .../source/components/utilities/uterror.c     |    2 +-
 .../source/components/utilities/uteval.c      |    2 +-
 .../source/components/utilities/utexcep.c     |    2 +-
 .../source/components/utilities/utglobal.c    |    2 +-
 .../source/components/utilities/uthex.c       |    2 +-
 .../source/components/utilities/utids.c       |    2 +-
 .../source/components/utilities/utinit.c      |    4 +-
 .../source/components/utilities/utlock.c      |    2 +-
 .../source/components/utilities/utmath.c      |    2 +-
 .../source/components/utilities/utmisc.c      |    2 +-
 .../source/components/utilities/utmutex.c     |    2 +-
 .../source/components/utilities/utnonansi.c   |    2 +-
 .../source/components/utilities/utobject.c    |    2 +-
 .../source/components/utilities/utosi.c       |    4 +-
 .../source/components/utilities/utownerid.c   |    2 +-
 .../source/components/utilities/utpredef.c    |    2 +-
 .../source/components/utilities/utprint.c     |   10 +-
 .../source/components/utilities/utresdecode.c |   15 +-
 .../source/components/utilities/utresrc.c     |    5 +-
 .../source/components/utilities/utstate.c     |    2 +-
 .../source/components/utilities/utstring.c    |   12 +-
 .../source/components/utilities/utstrsuppt.c  |    2 +-
 .../source/components/utilities/utstrtoul64.c |    2 +-
 .../source/components/utilities/uttrack.c     |    2 +-
 .../source/components/utilities/utuuid.c      |    2 +-
 .../source/components/utilities/utxface.c     |    2 +-
 .../source/components/utilities/utxferror.c   |    2 +-
 .../source/components/utilities/utxfinit.c    |   30 +-
 .../source/components/utilities/utxfmutex.c   |    2 +-
 .../dev/acpica/source/include/acapps.h        |    4 +-
 .../dev/acpica/source/include/acbuffer.h      |    2 +-
 .../dev/acpica/source/include/acclib.h        |    2 +-
 .../dev/acpica/source/include/accommon.h      |    2 +-
 .../dev/acpica/source/include/acconfig.h      |    5 +-
 .../dev/acpica/source/include/acconvert.h     |    2 +-
 .../dev/acpica/source/include/acdebug.h       |    6 +-
 .../dev/acpica/source/include/acdisasm.h      |  184 +-
 .../dev/acpica/source/include/acdispat.h      |    2 +-
 .../dev/acpica/source/include/acevents.h      |    2 +-
 .../dev/acpica/source/include/acexcep.h       |   11 +-
 .../dev/acpica/source/include/acglobal.h      |   10 +-
 .../dev/acpica/source/include/achware.h       |    2 +-
 .../dev/acpica/source/include/acinterp.h      |    6 +-
 .../dev/acpica/source/include/aclocal.h       |   40 +-
 .../dev/acpica/source/include/acmacros.h      |    2 +-
 .../dev/acpica/source/include/acnames.h       |    3 +-
 .../dev/acpica/source/include/acnamesp.h      |    2 +-
 .../dev/acpica/source/include/acobject.h      |   84 +-
 .../dev/acpica/source/include/acopcode.h      |    2 +-
 .../dev/acpica/source/include/acoutput.h      |    7 +-
 .../dev/acpica/source/include/acparser.h      |    2 +-
 sys/contrib/dev/acpica/source/include/acpi.h  |    2 +-
 .../dev/acpica/source/include/acpiosxf.h      |    2 +-
 .../dev/acpica/source/include/acpixf.h        |   29 +-
 .../dev/acpica/source/include/acpredef.h      |    7 +-
 .../dev/acpica/source/include/acresrc.h       |    4 +-
 .../dev/acpica/source/include/acrestyp.h      |   41 +-
 .../dev/acpica/source/include/acstruct.h      |    2 +-
 .../dev/acpica/source/include/actables.h      |   12 +-
 .../dev/acpica/source/include/actbinfo.h      |  111 +-
 sys/contrib/dev/acpica/source/include/actbl.h |   20 +-
 .../dev/acpica/source/include/actbl1.h        |  376 +++-
 .../dev/acpica/source/include/actbl2.h        | 1638 ++++++++++++++---
 .../dev/acpica/source/include/actbl3.h        |   42 +-
 .../dev/acpica/source/include/actypes.h       |   52 +-
 .../dev/acpica/source/include/acutils.h       |   29 +-
 .../dev/acpica/source/include/acuuid.h        |    5 +-
 .../dev/acpica/source/include/amlcode.h       |    2 +-
 .../dev/acpica/source/include/amlresrc.h      |   34 +-
 .../acpica/source/include/platform/accygwin.h |    2 +-
 .../source/include/platform/acdragonfly.h     |   11 +-
 .../source/include/platform/acdragonflyex.h   |    2 +-
 .../acpica/source/include/platform/acefi.h    |    2 +-
 .../acpica/source/include/platform/acefiex.h  |    4 +-
 .../acpica/source/include/platform/acenv.h    |   10 +-
 .../acpica/source/include/platform/acenvex.h  |    2 +-
 .../source/include/platform/acfreebsd.h       |    6 +-
 .../acpica/source/include/platform/acgcc.h    |   23 +-
 .../acpica/source/include/platform/acgccex.h  |    2 +-
 .../acpica/source/include/platform/achaiku.h  |   11 +-
 .../acpica/source/include/platform/acintel.h  |    2 +-
 .../acpica/source/include/platform/aclinux.h  |   13 +-
 .../source/include/platform/aclinuxex.h       |    2 +-
 .../acpica/source/include/platform/acmacosx.h |    2 +-
 .../acpica/source/include/platform/acmsvc.h   |    2 +-
 .../acpica/source/include/platform/acmsvcex.h |    2 +-
 .../acpica/source/include/platform/acnetbsd.h |    2 +-
 .../acpica/source/include/platform/acos2.h    |    2 +-
 .../acpica/source/include/platform/acqnx.h    |    2 +-
 .../acpica/source/include/platform/acwin.h    |   13 +-
 .../acpica/source/include/platform/acwin64.h  |    2 +-
 .../acpica/source/include/platform/aczephyr.h |  199 ++
 .../os_specific/service_layers/osbsdtbl.c     |    2 +-
 .../os_specific/service_layers/osgendbg.c     |    2 +-
 .../os_specific/service_layers/oslinuxtbl.c   |    8 +-
 .../os_specific/service_layers/osunixdir.c    |    2 +-
 .../os_specific/service_layers/osunixmap.c    |    2 +-
 .../os_specific/service_layers/osunixxf.c     |    2 +-
 .../os_specific/service_layers/oswindir.c     |    2 +-
 .../os_specific/service_layers/oswintbl.c     |    2 +-
 .../os_specific/service_layers/oswinxf.c      |    2 +-
 .../os_specific/service_layers/oszephyr.c     | 1154 ++++++++++++
 .../acpica/source/tools/acpibin/abcompare.c   |    2 +-
 .../dev/acpica/source/tools/acpibin/abmain.c  |    2 +-
 .../dev/acpica/source/tools/acpibin/acpibin.h |    2 +-
 .../acpica/source/tools/acpidump/acpidump.h   |    2 +-
 .../dev/acpica/source/tools/acpidump/apdump.c |    6 +-
 .../acpica/source/tools/acpidump/apfiles.c    |    2 +-
 .../dev/acpica/source/tools/acpidump/apmain.c |    2 +-
 .../acpica/source/tools/acpiexec/aecommon.h   |    2 +-
 .../source/tools/acpiexec/aeexception.c       |    6 +-
 .../dev/acpica/source/tools/acpiexec/aeexec.c |    2 +-
 .../acpica/source/tools/acpiexec/aehandlers.c |    2 +-
 .../acpica/source/tools/acpiexec/aeinitfile.c |    2 +-
 .../acpica/source/tools/acpiexec/aeinstall.c  |  120 +-
 .../dev/acpica/source/tools/acpiexec/aemain.c |    2 +-
 .../acpica/source/tools/acpiexec/aeregion.c   |    2 +-
 .../acpica/source/tools/acpiexec/aetables.c   |   12 +-
 .../acpica/source/tools/acpiexec/aetables.h   |    2 +-
 .../acpica/source/tools/acpiexec/aetests.c    |    2 +-
 .../acpica/source/tools/acpihelp/acpihelp.h   |    2 +-
 .../dev/acpica/source/tools/acpihelp/ahaml.c  |    2 +-
 .../acpica/source/tools/acpihelp/ahamlops.c   |    2 +-
 .../dev/acpica/source/tools/acpihelp/ahasl.c  |    2 +-
 .../acpica/source/tools/acpihelp/ahaslkey.c   |    2 +-
 .../acpica/source/tools/acpihelp/ahaslops.c   |    2 +-
 .../acpica/source/tools/acpihelp/ahdecode.c   |    2 +-
 .../acpica/source/tools/acpihelp/ahgrammar.c  |    2 +-
 .../dev/acpica/source/tools/acpihelp/ahmain.c |    4 +-
 .../dev/acpica/source/tools/acpisrc/acpisrc.h |    2 +-
 .../dev/acpica/source/tools/acpisrc/ascase.c  |    2 +-
 .../acpica/source/tools/acpisrc/asconvrt.c    |   72 +-
 .../dev/acpica/source/tools/acpisrc/asfile.c  |    2 +-
 .../dev/acpica/source/tools/acpisrc/asmain.c  |    2 +-
 .../acpica/source/tools/acpisrc/asremove.c    |    2 +-
 .../dev/acpica/source/tools/acpisrc/astable.c |   80 +-
 .../dev/acpica/source/tools/acpisrc/asutils.c |    2 +-
 .../source/tools/acpixtract/acpixtract.c      |   10 +-
 .../source/tools/acpixtract/acpixtract.h      |    2 +-
 .../acpica/source/tools/acpixtract/axmain.c   |    2 +-
 .../acpica/source/tools/acpixtract/axutils.c  |    4 +-
 .../acpica/source/tools/efihello/efihello.c   |    2 +-
 .../acpica/source/tools/examples/examples.c   |    2 +-
 .../acpica/source/tools/examples/examples.h   |    2 +-
 .../acpica/source/tools/examples/exstubs.c    |    2 +-
 .../acpica/source/tools/examples/extables.c   |   10 +-
 sys/dev/acpica/Makefile                       |    2 +-
 usr.sbin/acpi/acpidump/Makefile               |    1 +
 usr.sbin/acpi/acpiexec/Makefile               |    1 +
 usr.sbin/acpi/iasl/Makefile                   |    1 +
 usr.sbin/acpi/iasl/iasl.8                     |    6 +-
 443 files changed, 12854 insertions(+), 3230 deletions(-)
 create mode 100644 sys/contrib/dev/acpica/source/components/utilities/utcksum.c
 create mode 100644 sys/contrib/dev/acpica/source/include/platform/aczephyr.h
 create mode 100644 sys/contrib/dev/acpica/source/os_specific/service_layers/oszephyr.c

diff --git a/sys/conf/files b/sys/conf/files
index 57f566007a..a0bbcc7a2e 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -2807,6 +2807,7 @@ ${ACPICA_COMP_DIR}/utilities/utaddress.c	optional acpi
 ${ACPICA_COMP_DIR}/utilities/utalloc.c		optional acpi
 ${ACPICA_COMP_DIR}/utilities/utascii.c		optional acpi
 ${ACPICA_COMP_DIR}/utilities/utbuffer.c		optional acpi
+${ACPICA_COMP_DIR}/utilities/utcksum.c		optional acpi
 ${ACPICA_COMP_DIR}/utilities/utcopy.c		optional acpi
 ${ACPICA_COMP_DIR}/utilities/utdebug.c		optional acpi
 ${ACPICA_COMP_DIR}/utilities/utdecode.c		optional acpi
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index d5cc9942f7..36c66d4d2c 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/changes.txt
@@ -1,3 +1,329 @@
+----------------------------------------
+7 August 2025. Summary of changes for version 20250807:
+
+Major changes:
+
+Added option to skip the global lock for SMM - Huacai Chen
+
+Fixed non-NUL terminated string implementations - Ahmed Salem
+
+Fixed CCEL and CDAT templates - Ahmed Salem
+
+Fixed a major Linux kernel bug (UAF) that was triggered by unequal number of method parameters (definition) vs arguments (invocation) in different places - Peter Williams, Hans de Goede, Rafael Wysocki
+
+Define distinct D3 states (D3Hot and D3Cold) that help clarify the device behavior support - Aymeric Wibo
+
+A few cleanups, improvements to existing table supports, small fixes, spelling corrections etc.
+
+
+----------------------------------------
+4 April 2025. Summary of changes for version 20250404:
+
+Major changes:
+
+Update all the copyright continuation year to 2025 in the license header of all files
+
+Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony Luck & V L Sunil)
+
+Add a license file to the project which is a great improvement (Dionna Glaze)
+
+Update DMAR and TPM2 tables to support their latest versions (Alexey Neyman and Stuart Yoder)
+
+A few fixes including local cache allocation, FFixedHW Region, attribute packing, string vs. non-string char array, vsnprintf()etc. along with some comments, spelling errors and code alignment (multiple awesome contributors)
+
+
+----------------------------------------
+12 December 2024. Summary of changes for version 20241212:
+
+Major changes:
+
+Fix 2 critical CVE addressing memory leaks - Seunghun Han
+
+EINJ V2 updates - Zaid Alali (Ampere Computing)
+
+CDAT updates - Ira Weiny (Intel Corporation)
+
+Fix mutex handling, do not release ones that were never acquired - Daniil Tatianin
+
+Experiment with new tag name format Ryyyy_mm_dd to solve chronological sorting problems
+
+
+----------------------------------------
+27 September 2024. Summary of changes for version 20240927:
+
+Major changes:
+
+Fix the acpixf.h file which caused issues for the last release (before this) 20240827
+
+Fix the pointer offset for the SLIC table
+
+Verify the local environment and GitHub commits are all in sync which was a problem with the second from last release (before this)20240322 (aka 20240323 - date issue)
+
+
+
+----------------------------------------
+27 August 2024. Summary of changes for version 20240827:
+
+Major changes:
+
+Fix the PHAT table working: ensure that the PHAT firmware health record offset works correctly, fix various sub-table offsets, prevent segmentation faults when encountering invalid device paths. Contributed by: Armin Wolf <W_Armin@gmx.de>
+
+Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin <99danilt@gmail.com>
+
+Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone (Fedora) <ahs3@ahs3.net>
+
+Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
+
+Fix the integer to hex string conversions by Armin Wolf
+
+Detecting FACS in reduced HW mode and allowing setting waking vector thereby waking up from S3 state
+
+Fixing issues with crossing page boundaries when mapping operation regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD)
+
+Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
+
+Fix multiple issues with table parsing, compilation and disassembly by Myra DeMere (Google)
+
+Allow for more flexibility in _DSM usage.
+
+
+----------------------------------------
+22 March 2024. Summary of changes for version 20240322:
+
+Major changes:
+
+Update all the license header year from 2023 to 2024.
+
+Fix table argument ordering to work properly with iasl.
+
+Get rid of the annoying repeated warning types in MSVC and Windows.
+
+Fix a test in ASLTS with edge case failure.
+
+Fix a couple of issues with how GPEs are counted and enabled.
+
+Add new tables for various architectures/OS, mainly RISC-V and also update many more.
+
+Add an option to either make the output deterministic or non-deterministic.
+
+Remove redundant checks, duplicated code and fix spellings in various files.
+
+Fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc.
+
+
+----------------------------------------
+28 June 2023. Summary of changes for version 20230628:
+
+0) Global changes:
+
+Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime arguments). Reported by: Abhishek Mainkar abmainkar@nvidia.com.
+
+Added a define for size of acpi_srat_generic_affinity DeviceHandle. Replaced a magic number with a define. The Linux kernel code will utilize this. Reported by Dave Jiang dave.jiang@intel.com.
+
+Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
+
+1) ACPICA kernel-resident subsystem:
+
+Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.
+
+Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com.
+
+1) ACPICA kernel-resident subsystem:
+
+Fix GCC 12 dangling-pointer warning.  We're storing a persistent pointer to an ephemeral local variable which technically is a dangling pointer and the compiler is correct. However, since we never indirect the pointer, this is a safe operation and we can suppress the warning.
+
+Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly so we must include it explicitly or we won't have the type definition for uintptr_t.
+
+2) iASL Compiler/Disassembler and ACPICA tools:.
+
+IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table is updated with new nodes. Add compile and dump functionality for these new structures.
+
+AcpiExec: Added a new command, ?interrupt?. The Interrupt command simulates an interrupt with a IntID (GSIV) equal to the first argument of the call/invocation. The acpiexec code simulates the behavior by OSPM: execute the _EVT method of the GED device associated with that IntID. Submitted by: Jose Marinho jose.marinho@arm.com.
+
+AcpiExec: Detect GED device and keep track of _EVT. The GED device is described by a _HID of ACPI0013. This code traverses the namespace identifying all GED devices. For each GED device in the namespace we record the Interrupt object and the _EVT method. This information is used when an interrupt is simulated via the ?interrupt? command. Submitted by: Jose Marinho jose.marinho@arm.com.
+----------------------------------------
+31 March 2023. Summary of changes for version 20230331:
+
+This release is available at https://acpica.org/downloads
+
+0) Global changes:
+
+
+Update all copyright notices to the year 2023. This effects all source
+modules, as well as utility signons.
+Add OS-specific support for Zephyr RTOS.
+Fix miscellaneous code that accesses various objects.
+Remove some dead code.
+Add C ?Flexible Array? support.
+Add support for 64 bit LoongArch compilation.
+Add first batch of RISC-V related definitions.
+Performed a global automated update to remove tabs, fix indentation
+issues, etc.
+
+1) ACPICA kernel-resident subsystem:
+
+hwvalid: Drop port I/O validation.
+
+2) ACPICA tools and utilities:
+
+iASL: Added full macro support in the preprocessor. Example:
+#define ABCD(a,b,c,d) a+b+c-d
+
+Known macro support limitations (at this time):
+	No support for multi-line #define macros (backslash continuation
+lines)
+	No support for the C-style ternary operator
+	No support for the stringizing operator (#)
+	No support for the concatenation (token pasting) operator (##)
+	No support for variable number of macro arguments
+
+Add support for AMD Secure Processor Table (ASPT) version 1.
+Add support for Arm's MPAM ACPI table version 2.
+ACPI 6.5: MADT: add support for trace buffer extension in GICC.
+Headers: Delete bogus NodeArray array of pointers from AEST table.
+PHAT table support is still ongoing.
+
+
+----------------------------------------
+20 October 2022. Summary of changes for version 20221020:
+
+This release is available at https://acpica.org/downloads
+
+0) Global changes:
+
+Allow disabling of -Werror. For distro maintainers having `-Werror` can
+delay update of GCC. Since every GCC release might add new warnings that
+were not yet captured, it might break the build of packages. With this
+change, distros can now build with `NOWERROR=TRUE` instead of patching
+either the errors or the makefiles. The default behavior keeps on using
+`-Werror`.
+
+1) ACPICA kernel-resident subsystem:
+
+Added support for FFH Operation Region special context data. FFH(Fixed
+Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
+first approach[1]. It requires special context data similar to GPIO and
+Generic Serial Bus as it needs to know platform specific offset and
+length.
+
+Reverted this commit "executer/exsystem: Warn about sleeps greater than
+10 ms." Due to user complaints about valid sleeps greater than 10ms seen
+in some existing machines -- generating lots of warnings.
+
+Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
+EBDA region must be at least 1KiB in size. Because this is not
+guaranteed, it might happen that while scanning the memory for RSDP
+pointer, the kernel touches memory above 640KiB. This is unwanted as the
+VGA memory range may not be decoded or even present when running under
+virtualization.
+
+Check that EBDA pointer is in valid memory. If the memory at 0x40e is
+uninitialized, the retrieved physical memory address of EBDA may be
+beyond the low memory (i.e. above 640K). If so, the kernel may
+unintentionally access the VGA memory, that might not be decoded or even
+present in case of virtualization.
+
+2) iASL Compiler/Disassembler and ACPICA tools:
+
+Completed the existing partial support for the CDAT "table". Although
+this isn't technically an ACPI table (It doesn't go into the XSDT), it is
+possible to support this table in the Data Table compiler. Created one
+new file, "utilities/utcksum.c", used to centralize checksum
+generation/validation into one location. Includes changes to makefiles
+and MSVC project files.
+
+Updated support for the IORT table - update to version E.e
+
+Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
+
+iASL: Added CCEL table to both compiler/disassembler.
+
+iASL: NHLT table: Fixed compilation of optional undocumented fields
+
+iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
+("iASL: Add CCEL table to both compiler/disassembler") introduced the
+iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
+table member reference. To fix it,  change ACPI_TDEL_OFFSET with
+ACPI_CCEL_OFFSET.
+
+----------------------------------------
+31 March 2022. Summary of changes for version 20220331:
+
+0) Global changes:
+
+Update all copyright notices to the year 2022. This effects all source
+modules, as well as utility signons.
+
+
+1) ACPICA kernel-resident subsystem:
+
+For the ASL Sleep() operator, issue a warning if the sleep value is
+greater than 10 Milliseconds. Quick boottime is important, so warn about
+sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
+ms, so excessive delays should be called out. 10 ms is chosen randomly,
+but three of such delays would already make up ten percent of the
+boottime.
+
+Namespace: Avoid attempting to walk the Namespace if the Namespace does
+not exist.
+
+AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
+LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
+pass/fail integer. Now load returns a pass/fail integer, as well as
+storing the return value in an optional 2nd argument.
+
+Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
+"performing pointer subtraction with a null pointer has undefined
+behavior" compiler warnings, use uintptr_t and offsetof() that are always
+available during Linux kernel builds to define ACPI_UINTPTR_T and the
+ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
+in the Linux kernel.
+
+Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
+by superm1.
+
+executer/exsystem: Inform users about ACPI spec violation for the Stall()
+operator. Values greater than 100 microseconds violate the ACPI
+specification, so warn users about it. From the ACPI Specification
+version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
+> The implementation of Stall is OS-specific, but must not relinquish
+> control of the processor. Because of this, delays longer than 100
+> microseconds must use Sleep instead of Stall.
+
+
+2) iASL Compiler/Disassembler and ACPICA tools:
+
+Data Table Compiler/Disassembler: Add support for the APMT table - ARM
+Performance Monitoring Unit table. Submitted by @bwicaksononv.
+
+Data Table Compiler/Disassembler: For MADT, add support for the OEM-
+defined subtables (Types 0x80-0x7F).
+
+Data Table Compiler: Fixed a problem with support for the SDEV table,
+where a subtable Length was not computed correctly.
+
+Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
+Acpi table support.
+
+Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
+add template. Submitted by MasterDrogo.
+
+Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
+iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
+readability of the code.
+iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
+Undocumented bytes at the end of Endpoint Descriptor can be present
+independently of Linux-specific structures. Their size can also vary.
+iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
+bytes of size and then an amount of bytes specified by size. All of the
+terminators that I've seen had a size equal to 4, but theoretically it
+can vary.
+
+iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
+
+iASL: Remove a remark due to excessive output. Removed a remark for
+duplicate Offset() operators, due to a user complaint.
+
 ----------------------------------------
 17 December 2021. Summary of changes for version 20211217:
 
@@ -6862,7 +7188,6 @@ features become unavailable:
     General Purpose Events (GPEs)
     Global Lock
     ACPI PM timer
-    FACS table (Waking vectors and Global Lock)
 
 Updated the unix tarball directory structure to match the ACPICA git 
 source 
diff --git a/sys/contrib/dev/acpica/generate/release/build.sh b/sys/contrib/dev/acpica/generate/release/build.sh
index ba73227dd6..3e6d944032 100644
--- a/sys/contrib/dev/acpica/generate/release/build.sh
+++ b/sys/contrib/dev/acpica/generate/release/build.sh
@@ -38,7 +38,7 @@
 # Configuration
 
 ZIP_UTILITY="/cygdrive/c/windows/pkzip25.exe"
-ACPISRC="libraries/acpisrc.exe"
+ACPISRC="libraries/acpisrc_dbg.exe"
 DOS2UNIX="dos2unix"
 UNIX2DOS="unix2dos"
 
diff --git a/sys/contrib/dev/acpica/generate/unix/Makefile.config b/sys/contrib/dev/acpica/generate/unix/Makefile.config
index b466343671..ae80ccf2ef 100644
--- a/sys/contrib/dev/acpica/generate/unix/Makefile.config
+++ b/sys/contrib/dev/acpica/generate/unix/Makefile.config
@@ -71,14 +71,25 @@ ifeq ($(UNAME_S), QNX)
 ACPI_HOST =       _QNX
 endif
 
+ifeq ($(UNAME_S), Haiku)
+ACPI_HOST =       _HAIKU
+endif
+
 ifeq ($(ACPI_HOST), _APPLE)
 INSTALL  =   cp
 INSTALLFLAGS ?= -f
 else
 INSTALL =    install
+
+# Do not strip debug info when in debug mode
+ifeq ($(DEBUG),TRUE)
+INSTALLFLAGS ?= -m 555
+else
 INSTALLFLAGS ?= -m 555 -s
 endif
 
+endif
+
 INSTALLPROG = \
 	mkdir -p $(DESTDIR)$(INSTALLDIR); \
 	$(INSTALL) $(INSTALLFLAGS) ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG)
@@ -203,7 +214,6 @@ CWARNINGFLAGS = \
     -Wall\
     -Wbad-function-cast\
     -Wdeclaration-after-statement\
-    -Werror\
     -Wformat=2\
     -Wmissing-declarations\
     -Wmissing-prototypes\
@@ -213,6 +223,10 @@ CWARNINGFLAGS = \
     -Wpointer-arith\
     -Wundef
 
+ifneq ($(NOWERROR),TRUE)
+CWARNINGFLAGS += -Werror
+endif
+
 #
 # Common gcc 4+ warning flags
 #
diff --git a/sys/contrib/dev/acpica/generate/unix/acpidump/Makefile b/sys/contrib/dev/acpica/generate/unix/acpidump/Makefile
index 292eec7127..ac6ee9b6de 100644
--- a/sys/contrib/dev/acpica/generate/unix/acpidump/Makefile
+++ b/sys/contrib/dev/acpica/generate/unix/acpidump/Makefile
@@ -40,6 +40,7 @@ OBJECTS = \
 	$(OBJDIR)/tbxfroot.o\
 	$(OBJDIR)/utascii.o\
 	$(OBJDIR)/utbuffer.o\
+	$(OBJDIR)/utcksum.o\
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utexcep.o\
 	$(OBJDIR)/utglobal.o\
diff --git a/sys/contrib/dev/acpica/generate/unix/acpiexamples/Makefile b/sys/contrib/dev/acpica/generate/unix/acpiexamples/Makefile
index 0f23c88de3..5a3d508f8b 100644
--- a/sys/contrib/dev/acpica/generate/unix/acpiexamples/Makefile
+++ b/sys/contrib/dev/acpica/generate/unix/acpiexamples/Makefile
@@ -135,6 +135,7 @@ OBJECTS = \
 	$(OBJDIR)/utascii.o\
 	$(OBJDIR)/utbuffer.o\
 	$(OBJDIR)/utcache.o\
+	$(OBJDIR)/utcksum.o\
 	$(OBJDIR)/utcopy.o\
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utdecode.o\
diff --git a/sys/contrib/dev/acpica/generate/unix/acpiexec/Makefile b/sys/contrib/dev/acpica/generate/unix/acpiexec/Makefile
index 660afa9397..9e58526142 100644
--- a/sys/contrib/dev/acpica/generate/unix/acpiexec/Makefile
+++ b/sys/contrib/dev/acpica/generate/unix/acpiexec/Makefile
@@ -210,6 +210,7 @@ OBJECTS = \
 	$(OBJDIR)/utascii.o\
 	$(OBJDIR)/utbuffer.o\
 	$(OBJDIR)/utcache.o\
+	$(OBJDIR)/utcksum.o\
 	$(OBJDIR)/utcopy.o\
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utdecode.o\
@@ -261,9 +262,11 @@ endif
 
 ifneq ($(ACPI_HOST),_APPLE)
 ifneq ($(ACPI_HOST),_QNX)
+ifneq ($(ACPI_HOST),_HAIKU)
 LDFLAGS += -lrt
 endif
 endif
+endif
 
 #
 # Common Rules
diff --git a/sys/contrib/dev/acpica/generate/unix/iasl/Makefile b/sys/contrib/dev/acpica/generate/unix/iasl/Makefile
index 47ea73caba..8fde63d46c 100644
--- a/sys/contrib/dev/acpica/generate/unix/iasl/Makefile
+++ b/sys/contrib/dev/acpica/generate/unix/iasl/Makefile
@@ -221,6 +221,7 @@ OBJECTS = \
 	$(OBJDIR)/utascii.o\
 	$(OBJDIR)/utbuffer.o\
 	$(OBJDIR)/utcache.o\
+	$(OBJDIR)/utcksum.o\
 	$(OBJDIR)/utcopy.o\
 	$(OBJDIR)/utdebug.o\
 	$(OBJDIR)/utdecode.o\
@@ -290,6 +291,12 @@ CFLAGS += \
     -I$(ASL_COMPILER)\
     -I$(OBJDIR)
 
+ifeq ($(NOWERROR),TRUE)
+WERROR_FLAGS=
+else
+WERROR_FLAGS=-Werror
+endif
+
 #
 # Common Rules
 #
@@ -360,32 +367,32 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h :       $(ASL_COMPILER)/prparse
 #
 $(OBJDIR)/aslcompilerlex.o :   $(OBJDIR)/aslcompilerlex.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/dtcompilerparserlex.o :      $(OBJDIR)/dtcompilerparserlex.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/dtcompilerparserparse.o :    $(OBJDIR)/dtcompilerparserparse.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/dtparserlex.o :      $(OBJDIR)/dtparserlex.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/dtparserparse.o :    $(OBJDIR)/dtparserparse.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/prparserlex.o :      $(OBJDIR)/prparserlex.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
 
 $(OBJDIR)/prparserparse.o :    $(OBJDIR)/prparserparse.c
 	@echo "- " "Intermediate" $<
-	@$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $<
+	@$(CC) -c $(CFLAGS) -Wall $(WERROR_FLAGS) -o$@ $<
diff --git a/sys/contrib/dev/acpica/source/common/acfileio.c b/sys/contrib/dev/acpica/source/common/acfileio.c
index 3e26ac3f42..eb5327bf1d 100644
--- a/sys/contrib/dev/acpica/source/common/acfileio.c
+++ b/sys/contrib/dev/acpica/source/common/acfileio.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -387,16 +387,36 @@ AcGetOneTableFromFile (
     ACPI_TABLE_HEADER       TableHeader;
     ACPI_TABLE_HEADER       *Table;
     INT32                   Count;
-    long                    TableOffset;
-
+    UINT32                  TableLength;
+    UINT32                  HeaderLength;
+    long                    TableOffset = 0;
 
     *ReturnTable = NULL;
 
     /* Get the table header to examine signature and length */
+    /*
+     * Special handling for the CDAT table (both the Length field
+     * and the Checksum field are not in the standard positions).
+     * (The table header is non-standard).
+     */
+    if (AcpiGbl_CDAT)
+    {
+        HeaderLength = sizeof (ACPI_TABLE_CDAT);
+    }
+    else
+    {
+        HeaderLength = sizeof (ACPI_TABLE_HEADER);
+    }
+
+    Status = AcValidateTableHeader (File, TableOffset);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
 
     TableOffset = ftell (File);
-    Count = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), File);
-    if (Count != sizeof (ACPI_TABLE_HEADER))
+    Count = fread (&TableHeader, 1, HeaderLength, File);
+    if (Count != (INT32) HeaderLength)
     {
         return (AE_CTRL_TERMINATE);
     }
@@ -405,12 +425,6 @@ AcGetOneTableFromFile (
     {
         /* Validate the table signature/header (limited ASCII chars) */
 
-        Status = AcValidateTableHeader (File, TableOffset);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-
         /*
          * Table must be an AML table (DSDT/SSDT).
          * Used for iASL -e option only.
@@ -425,9 +439,22 @@ AcGetOneTableFromFile (
         }
     }
 
+    /*
+     * Special handling for the CDAT table (both the Length field
+     * and the Checksum field are not in the standard positions).
+     */
+    if (AcpiGbl_CDAT)
+    {
+        TableLength = ACPI_CAST_PTR (ACPI_TABLE_CDAT, &TableHeader)->Length;
+    }
+    else
+    {
+        TableLength = TableHeader.Length;
+    }
+
     /* Allocate a buffer for the entire table */
 
-    Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length);
+    Table = AcpiOsAllocate ((ACPI_SIZE) TableLength);
     if (!Table)
     {
         return (AE_NO_MEMORY);
@@ -436,22 +463,31 @@ AcGetOneTableFromFile (
     /* Read the entire ACPI table, including header */
 
     fseek (File, TableOffset, SEEK_SET);
-
-    Count = fread (Table, 1, TableHeader.Length, File);
+    Count = fread (Table, 1, TableLength, File);
 
     /*
      * Checks for data table headers happen later in the execution. Only verify
      * for Aml tables at this point in the code.
      */
-    if (GetOnlyAmlTables && Count != (INT32) TableHeader.Length)
+    if (GetOnlyAmlTables && Count != (INT32) TableLength)
     {
         Status = AE_ERROR;
         goto ErrorExit;
     }
 
-    /* Validate the checksum (just issue a warning) */
+    /*
+     * Validate the checksum (just issue a warning if incorrect).
+     * Note: CDAT is special cased here because the table does
+     * not have the checksum field in the standard position.
+     */
+    if (AcpiGbl_CDAT)
+    {
+        Status = AcpiUtVerifyCdatChecksum ((ACPI_TABLE_CDAT *) Table, TableLength);
+    } else
+    {
+        Status = AcpiUtVerifyChecksum (Table, TableLength);
+    }
 
-    Status = AcpiTbVerifyChecksum (Table, TableHeader.Length);
     if (ACPI_FAILURE (Status))
     {
         Status = AcCheckTextModeCorruption (Table);
@@ -540,6 +576,8 @@ AcValidateTableHeader (
     long                    TableOffset)
 {
     ACPI_TABLE_HEADER       TableHeader;
+    ACPI_TABLE_CDAT         *CdatTableHeader = ACPI_CAST_PTR (ACPI_TABLE_CDAT, &TableHeader);
+    UINT32                  HeaderLength;
     ACPI_SIZE               Actual;
     long                    OriginalOffset;
     UINT32                  FileSize;
@@ -548,6 +586,16 @@ AcValidateTableHeader (
 
     ACPI_FUNCTION_TRACE (AcValidateTableHeader);
 
+    /* Determine the type of table header */
+
+    if (AcpiGbl_CDAT)
+    {
+        HeaderLength = sizeof (ACPI_TABLE_CDAT);
+    }
+    else
+    {
+        HeaderLength = sizeof (ACPI_TABLE_HEADER);
+    }
 
     /* Read a potential table header */
 
@@ -556,41 +604,76 @@ AcValidateTableHeader (
     {
         fprintf (stderr, "SEEK error\n");
     }
-    Actual = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), File);
+    Actual = fread (&TableHeader, 1, HeaderLength, File);
     if (fseek (File, OriginalOffset, SEEK_SET))
     {
         fprintf (stderr, "SEEK error\n");
     }
 
-    if (Actual < sizeof (ACPI_TABLE_HEADER))
+    if (Actual < HeaderLength)
     {
         fprintf (stderr,
             "Could not read entire table header: Actual %u, Requested %u\n",
-            (UINT32) Actual, (UINT32) sizeof (ACPI_TABLE_HEADER));
+            (UINT32) Actual, HeaderLength);
         return (AE_ERROR);
     }
 
     /* Validate the signature (limited ASCII chars) */
 
-    if (!AcpiUtValidNameseg (TableHeader.Signature))
+    if (!AcpiGbl_CDAT && !AcpiUtValidNameseg (TableHeader.Signature))
     {
+        /*
+         * The "-ds cdat" option was not used, and the signature is not valid.
+         *
+         * For CDAT we are assuming that there should be at least one non-ASCII
+         * byte in the (normally) 4-character Signature field (at least the
+         * high-order byte should be zero). Otherwise, this is OK.
+         */
+        fprintf (stderr,
+            "\nTable appears to be a CDAT table, which has no signature.\n"
+            "If this is in fact a CDAT table, use the -ds option on the\n"
+            "command line to specify the table type (signature):\n"
+            "\"iasl -d -ds CDAT <file>\" or \"iasl -ds CDAT -T CDAT\"\n\n");
+
         return (AE_BAD_SIGNATURE);
     }
 
     /* Validate table length against bytes remaining in the file */
 
     FileSize = CmGetFileSize (File);
-    if (TableHeader.Length > (UINT32) (FileSize - TableOffset))
+    if (!AcpiGbl_CDAT)
+    {
+        /* Standard ACPI table header */
+
+        if (TableHeader.Length > (UINT32) (FileSize - TableOffset))
+        {
+            fprintf (stderr, "Table [%4.4s] is too long for file - "
+                "needs: 0x%.2X, remaining in file: 0x%.2X\n",
+                TableHeader.Signature, TableHeader.Length,
+                (UINT32) (FileSize - TableOffset));
+            return (AE_BAD_HEADER);
+        }
+    }
+    else if (CdatTableHeader->Length > (UINT32) (FileSize - TableOffset))
     {
-        fprintf (stderr, "Table [%4.4s] is too long for file - "
+        /* Special header for CDAT table */
+
+        fprintf (stderr, "Table [CDAT] is too long for file - "
             "needs: 0x%.2X, remaining in file: 0x%.2X\n",
-            TableHeader.Signature, TableHeader.Length,
+            CdatTableHeader->Length,
             (UINT32) (FileSize - TableOffset));
         return (AE_BAD_HEADER);
     }
 
+    /* For CDAT table, there are no ASCII fields in the header, we are done */
+
+    if (AcpiGbl_CDAT)
+    {
+        return (AE_OK);
+    }
+
     /*
-     * These fields must be ASCII: OemId, OemTableId, AslCompilerId.
+     * These standard fields must be ASCII: OemId, OemTableId, AslCompilerId.
      * We allow a NULL terminator in OemId and OemTableId.
      */
     for (i = 0; i < ACPI_NAMESEG_SIZE; i++)
diff --git a/sys/contrib/dev/acpica/source/common/acgetline.c b/sys/contrib/dev/acpica/source/common/acgetline.c
index 88479d619a..207f7aa07d 100644
--- a/sys/contrib/dev/acpica/source/common/acgetline.c
+++ b/sys/contrib/dev/acpica/source/common/acgetline.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/adfile.c b/sys/contrib/dev/acpica/source/common/adfile.c
index db6bcabc1e..a5667af8cf 100644
--- a/sys/contrib/dev/acpica/source/common/adfile.c
+++ b/sys/contrib/dev/acpica/source/common/adfile.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/adisasm.c b/sys/contrib/dev/acpica/source/common/adisasm.c
index f549bd5aa3..dafc0d1e3a 100644
--- a/sys/contrib/dev/acpica/source/common/adisasm.c
+++ b/sys/contrib/dev/acpica/source/common/adisasm.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -458,7 +458,7 @@ AdDisassembleOneTable (
      */
     if (AcpiGbl_CaptureComments)
     {
-        strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE);
+        memcpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE);
     }
 #endif
 
@@ -476,17 +476,17 @@ AdDisassembleOneTable (
         /* This is a "Data Table" (non-AML table) */
 
         AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n",
-            Table->Signature);
+            AcpiGbl_CDAT ? (char *) AcpiGbl_CDAT : Table->Signature);
         AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength]  "
             "FieldName : FieldValue (in hex)\n */\n\n");
 
         AcpiDmDumpDataTable (Table);
-        fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n",
-            Table->Signature);
+        fprintf (stdout, "Acpi Data Table [%4.4s] decoded\n",
+            AcpiGbl_CDAT ? (char *) AcpiGbl_CDAT : Table->Signature);
 
         if (File)
         {
-            fprintf (stderr, "Formatted output:  %s - %u bytes\n",
+            fprintf (stdout, "Formatted output:  %s - %u bytes\n",
                 DisasmFilename, CmGetFileSize (File));
         }
 
@@ -584,16 +584,16 @@ AdDisassembleOneTable (
 
         AcpiDmDumpDataTable (Table);
 
-        fprintf (stderr, "Disassembly completed\n");
+        fprintf (stdout, "Disassembly completed\n");
         if (File)
         {
-            fprintf (stderr, "ASL Output:    %s - %u bytes\n",
+            fprintf (stdout, "ASL Output:    %s - %u bytes\n",
                 DisasmFilename, CmGetFileSize (File));
         }
 
         if (AslGbl_MapfileFlag)
         {
-            fprintf (stderr, "%14s %s - %u bytes\n",
+            fprintf (stdout, "%14s %s - %u bytes\n",
                 AslGbl_FileDescs[ASL_FILE_MAP_OUTPUT].ShortDescription,
                 AslGbl_Files[ASL_FILE_MAP_OUTPUT].Filename,
                 FlGetFileSize (ASL_FILE_MAP_OUTPUT));
@@ -630,7 +630,7 @@ AdReparseOneTable (
     ACPI_COMMENT_ADDR_NODE  *AddrListHead;
 
 
-    fprintf (stderr,
+    fprintf (stdout,
         "\nFound %u external control methods, "
         "reparsing with new information\n",
         AcpiDmGetUnresolvedExternalMethodCount ());
@@ -789,6 +789,7 @@ AdDoExternalFileList (
             AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot,
                 AcpiGbl_RootNode, OwnerId);
             AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot);
+            AcpiGbl_ParseOpRoot = NULL;
 
             ExternalListHead = ExternalListHead->Next;
         }
diff --git a/sys/contrib/dev/acpica/source/common/adwalk.c b/sys/contrib/dev/acpica/source/common/adwalk.c
index c4d149e3d4..d61b3235a0 100644
--- a/sys/contrib/dev/acpica/source/common/adwalk.c
+++ b/sys/contrib/dev/acpica/source/common/adwalk.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/ahids.c b/sys/contrib/dev/acpica/source/common/ahids.c
index b58bc08205..896e8cd61f 100644
--- a/sys/contrib/dev/acpica/source/common/ahids.c
+++ b/sys/contrib/dev/acpica/source/common/ahids.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/ahpredef.c b/sys/contrib/dev/acpica/source/common/ahpredef.c
index d92417d16c..c51f7c679d 100644
--- a/sys/contrib/dev/acpica/source/common/ahpredef.c
+++ b/sys/contrib/dev/acpica/source/common/ahpredef.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -234,6 +234,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_DMA",    "Direct Memory Access", "Returns device current resources for DMA transactions, and resource field"),
     AH_PREDEF ("_DOD",    "Display Output Devices", "Enumerate all devices attached to the display adapter"),
     AH_PREDEF ("_DOS",    "Disable Output Switching", "Sets the display output switching mode"),
+    AH_PREDEF ("_DSC",    "Deepest State for Configuration", "Returns the deepest D-state of the device to the OSPM"),
     AH_PREDEF ("_DPL",    "Device Selection Polarity", "Polarity of Device Selection signal, Resource Descriptor field"),
     AH_PREDEF ("_DRS",    "Drive Strength", "Drive Strength setting for GPIO connection, Resource Descriptor field"),
     AH_PREDEF ("_DSD",    "Device-Specific Data", "Returns a list of device property information"),
diff --git a/sys/contrib/dev/acpica/source/common/ahtable.c b/sys/contrib/dev/acpica/source/common/ahtable.c
index def425205d..705a61882a 100644
--- a/sys/contrib/dev/acpica/source/common/ahtable.c
+++ b/sys/contrib/dev/acpica/source/common/ahtable.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -202,10 +202,13 @@ const AH_TABLE      AcpiGbl_SupportedTables[] =
     {ACPI_SIG_AEST, "Arm Error Source Table"},
     {ACPI_SIG_AGDI, "Arm Generic Diagnostic Dump and Reset Device Interface Table"},
     {ACPI_SIG_ASF,  "Alert Standard Format Table"},
+    {ACPI_SIG_ASPT, "AMD Secure Processor Table"},
     {ACPI_SIG_BDAT, "BIOS Data ACPI Table"},
     {ACPI_SIG_BERT, "Boot Error Record Table"},
     {ACPI_SIG_BGRT, "Boot Graphics Resource Table"},
     {ACPI_SIG_BOOT, "Simple Boot Flag Table"},
+    {ACPI_SIG_CCEL, "CC-Event Log Table"},
+    {ACPI_SIG_CDAT, "Coherent Device Attribute Table"},
     {ACPI_SIG_CEDT, "CXL Early Discovery Table"},
     {ACPI_SIG_CPEP, "Corrected Platform Error Polling Table"},
     {ACPI_SIG_CSRT, "Core System Resource Table"},
@@ -216,6 +219,7 @@ const AH_TABLE      AcpiGbl_SupportedTables[] =
     {ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"},
     {ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"},
     {ACPI_SIG_EINJ, "Error Injection Table"},
+    {ACPI_SIG_ERDT, "Enhanced Resource Director Technology Table"},
     {ACPI_SIG_ERST, "Error Record Serialization Table"},
     {ACPI_SIG_FACS, "Firmware ACPI Control Structure"},
     {ACPI_SIG_FADT, "Fixed ACPI Description Table (FADT)"},
@@ -230,7 +234,9 @@ const AH_TABLE      AcpiGbl_SupportedTables[] =
     {ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"},
     {ACPI_SIG_MCFG, "Memory Mapped Configuration Table"},
     {ACPI_SIG_MCHI, "Management Controller Host Interface Table"},
+    {ACPI_SIG_MPAM, "Memory System Resource Partitioning and Monitoring Table"},
     {ACPI_SIG_MPST, "Memory Power State Table"},
+    {ACPI_SIG_MRRM, "Memory Range and Region Mapping Table"},
     {ACPI_SIG_MSCT, "Maximum System Characteristics Table"},
     {ACPI_SIG_MSDM, "Microsoft Data Management Table"},
     {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"},
@@ -242,6 +248,8 @@ const AH_TABLE      AcpiGbl_SupportedTables[] =
     {ACPI_SIG_PPTT, "Processor Properties Topology Table"},
     {ACPI_SIG_PRMT, "Platform Runtime Mechanism Table"},
     {ACPI_SIG_RASF, "RAS Features Table"},
+    {ACPI_SIG_RAS2, "RAS2 Features Table"},
+    {ACPI_SIG_RHCT, "RISC-V Hart Capabilities Table"},
     {ACPI_SIG_RGRT, "Regulatory Graphics Resource Table"},
     {ACPI_RSDP_NAME,"Root System Description Pointer"},
     {ACPI_SIG_RSDT, "Root System Description Table"},
@@ -257,6 +265,7 @@ const AH_TABLE      AcpiGbl_SupportedTables[] =
     {ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"},
     {ACPI_SIG_STAO, "Status Override Table"},
     {ACPI_SIG_SVKL, "Storage Volume Key Location Table"},
+    {ACPI_SIG_SWFT, "SoundWire File Table"},
     {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"},
     {ACPI_SIG_TDEL, "TD-Event Log Table"},
     {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"},
diff --git a/sys/contrib/dev/acpica/source/common/ahuuids.c b/sys/contrib/dev/acpica/source/common/ahuuids.c
index eef1c5688c..dd311a46e8 100644
--- a/sys/contrib/dev/acpica/source/common/ahuuids.c
+++ b/sys/contrib/dev/acpica/source/common/ahuuids.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -209,6 +209,9 @@ const AH_UUID  Gbl_AcpiUuids[] =
     {"Hierarchical Data Extension", UUID_HIERARCHICAL_DATA_EXTENSION},
     {"ARM Coresight Graph",         UUID_CORESIGHT_GRAPH},
     {"USB4 Capabilities",           UUID_USB4_CAPABILITIES},
+    {"First Function ID for _DSM",  UUID_1ST_FUNCTION_ID},
+    {"Second Function ID for _DSM", UUID_2ND_FUNCTION_ID},
+
     {NULL, NULL}
 };
 
diff --git a/sys/contrib/dev/acpica/source/common/cmfsize.c b/sys/contrib/dev/acpica/source/common/cmfsize.c
index 38ec915a98..2c4c88988e 100644
--- a/sys/contrib/dev/acpica/source/common/cmfsize.c
+++ b/sys/contrib/dev/acpica/source/common/cmfsize.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/dmextern.c b/sys/contrib/dev/acpica/source/common/dmextern.c
index 36d586008c..7821f0f867 100644
--- a/sys/contrib/dev/acpica/source/common/dmextern.c
+++ b/sys/contrib/dev/acpica/source/common/dmextern.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -1493,7 +1493,6 @@ AcpiDmMarkExternalConflict (
     ACPI_EXTERNAL_LIST      *ExternalList = AcpiGbl_ExternalList;
     char                    *ExternalPath;
     char                    *InternalPath;
-    char                    *Temp;
     ACPI_STATUS             Status;
 
 
@@ -1526,13 +1525,6 @@ AcpiDmMarkExternalConflict (
 
     while (ExternalList)
     {
-        Temp = ExternalList->InternalPath;
-        if ((*ExternalList->InternalPath == AML_ROOT_PREFIX) &&
-            (ExternalList->InternalPath[1]))
-        {
-            Temp++;
-        }
-
         if (!strcmp (ExternalList->InternalPath, InternalPath))
         {
             ExternalList->Flags |= ACPI_EXT_CONFLICTING_DECLARATION;
diff --git a/sys/contrib/dev/acpica/source/common/dmrestag.c b/sys/contrib/dev/acpica/source/common/dmrestag.c
index 59d5c4f4fa..e1d8979c44 100644
--- a/sys/contrib/dev/acpica/source/common/dmrestag.c
+++ b/sys/contrib/dev/acpica/source/common/dmrestag.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -480,6 +480,14 @@ static const ACPI_RESOURCE_TAG      AcpiDmIoFlagTags[] =
     {0,             NULL}
 };
 
+/* Subtype tables for ClockInput descriptor */
+
+static const ACPI_RESOURCE_TAG      AcpiDmClockInputTags[] =
+{
+    {( 6 * 8),      ACPI_RESTAG_FQD},
+    {( 8 * 8),      ACPI_RESTAG_FQN},
+    {0,             NULL}
+};
 
 /*
  * Dispatch table used to obtain the correct tag table for a descriptor.
@@ -531,6 +539,7 @@ static const ACPI_RESOURCE_TAG      *AcpiGbl_ResourceTags[] =
     NULL,                           /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */
     AcpiDmPinGroupFunctionTags,     /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */
     AcpiDmPinConfigTags,            /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG - Same as PinConfig */
+    AcpiDmClockInputTags,           /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */
 };
 
 /* GPIO Subtypes */
@@ -885,7 +894,7 @@ static void
 AcpiDmUpdateResourceName (
     ACPI_NAMESPACE_NODE     *ResourceNode)
 {
-    char                    Name[ACPI_NAMESEG_SIZE];
+    char                    Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
 
 
     /* Ignore if a unique name has already been assigned */
diff --git a/sys/contrib/dev/acpica/source/common/dmswitch.c b/sys/contrib/dev/acpica/source/common/dmswitch.c
index 2b894c65dc..87dde14d43 100644
--- a/sys/contrib/dev/acpica/source/common/dmswitch.c
+++ b/sys/contrib/dev/acpica/source/common/dmswitch.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/dmtable.c b/sys/contrib/dev/acpica/source/common/dmtable.c
index 3137132aba..02125db1bf 100644
--- a/sys/contrib/dev/acpica/source/common/dmtable.c
+++ b/sys/contrib/dev/acpica/source/common/dmtable.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -190,6 +190,8 @@ static const char           *AcpiDmAestSubnames[] =
     "SMMU Error Node",
     "Vendor-defined Error Node",
     "GIC Error Node",
+    "PCIE Error Node",
+    "PROXY Error Node",
     "Unknown Subtable Type"         /* Reserved */
 };
 
@@ -214,6 +216,7 @@ static const char           *AcpiDmAestXfaceNames[] =
 {
     "System Register Interface",
     "Memory Mapped Interface",
+    "Single Record Memory Mapped Interface",
     "Unknown Interface Type"        /* Reserved */
 };
 
@@ -234,10 +237,30 @@ static const char           *AcpiDmAsfSubnames[] =
     "Unknown Subtable Type"         /* Reserved */
 };
 
+static const char           *AcpiDmAsptSubnames[] =
+{
+    "ASPT Global Registers",
+    "ASPT SEV Mailbox Registers",
+    "ASPT ACPI Mailbox Registers",
+    "Unknown Subtable Type"         /* Reserved */
+};
+
+static const char           *AcpiDmCdatSubnames[] =
+{
+    "Device Scoped Memory Affinity Structure (DSMAS)",
+    "Device scoped Latency and Bandwidth Information Structure (DSLBIS)",
+    "Device Scoped Memory Side Cache Information Structure (DSMSCIS)",
+    "Device Scoped Initiator Structure (DSIS)",
+    "Device Scoped EFI Memory Type Structure (DSEMTS)",
+    "Switch Scoped Latency and Bandwidth Information Structure (SSLBIS)",
+    "Unknown Subtable Type"         /* Reserved */
+};
+
 static const char           *AcpiDmCedtSubnames[] =
 {
     "CXL Host Bridge Structure",
     "CXL Fixed Memory Window Structure",
+    "CXL XOR Interleave Math Structure",
     "Unknown Subtable Type"         /* Reserved */
 };
 
@@ -248,6 +271,8 @@ static const char           *AcpiDmDmarSubnames[] =
     "Root Port ATS Capability",
     "Remapping Hardware Static Affinity",
     "ACPI Namespace Device Declaration",
+    "SoC Integrated Address Translation Cache",
+    "SoC Integrated Device Property",
     "Unknown Subtable Type"         /* Reserved */
 };
 
@@ -288,6 +313,22 @@ static const char           *AcpiDmEinjInstructions[] =
     "Unknown Instruction"
 };
 
+static const char           *AcpiDmErdtSubnames[] =
+{
+    "RMDD",
+    "CACD",
+    "DACD",
+    "CMRC",
+    "MMRC",
+    "MARC",
+    "CARC",
+    "CMRD",
+    "IBRD",
+    "IBAD",
+    "CARD",
+    "RESERVED"
+};
+
 static const char           *AcpiDmErstActions[] =
 {
     "Begin Write Operation",
@@ -402,7 +443,30 @@ static const char           *AcpiDmMadtSubnames[] =
     "Generic Interrupt Redistributor",  /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
     "Generic Interrupt Translator",     /* ACPI_MADT_GENERIC_TRANSLATOR */
     "Mutiprocessor Wakeup",             /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
-    "Unknown Subtable Type"             /* Reserved */
+    "CPU Core Interrupt Controller",    /* ACPI_MADT_TYPE_CORE_PIC */
+    "Legacy I/O Interrupt Controller",  /* ACPI_MADT_TYPE_LIO_PIC */
+    "HT Interrupt Controller",          /* ACPI_MADT_TYPE_HT_PIC */
+    "Extend I/O Interrupt Controller",  /* ACPI_MADT_TYPE_EIO_PIC */
+    "MSI Interrupt Controller",         /* ACPI_MADT_TYPE_MSI_PIC */
+    "Bridge I/O Interrupt Controller",  /* ACPI_MADT_TYPE_BIO_PIC */
+    "LPC Interrupt Controller",         /* ACPI_MADT_TYPE_LPC_PIC */
+    "RISC-V Interrupt Controller",      /* ACPI_MADT_TYPE_RINTC */
+    "RISC-V Incoming MSI Controller",   /* ACPI_MADT_TYPE_IMSIC */
+    "RISC-V APLIC Controller",          /* ACPI_MADT_TYPE_APLIC */
+    "RISC-V PLIC Controller",           /* ACPI_MADT_TYPE_PLIC */
+    "Unknown Subtable Type",            /* Reserved */
+    "Types 80-FF are used for OEM data" /* Reserved for OEM data */
+};
+
+static const char           *AcpiDmMpamSubnames[] =
+{
+    "Processor cache",      /* ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE */
+    "Memory",               /* ACPI_MPAM_LOCATION_TYPE_MEMORY */
+    "SMMU",                 /* ACPI_MPAM_LOCATION_TYPE_SMMU */
+    "Memory-side cache",    /* ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE */
+    "ACPI device",          /* ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE */
+    "Interconnect",         /* ACPI_MPAM_LOCATION_TYPE_INTERCONNECT */
+    "Unknown"               /* ACPI_MPAM_LOCATION_TYPE_UNKNOWN */
 };
 
 static const char           *AcpiDmNfitSubnames[] =
@@ -418,70 +482,6 @@ static const char           *AcpiDmNfitSubnames[] =
     "Unknown Subtable Type"             /* Reserved */
 };
 
-static const char           *AcpiDmNhltLinkTypeNames[] =
-{
-    "Reserved for HD-Audio",            /* ACPI_NHLT_RESERVED_HD_AUDIO */
-    "Reserved for DSP",                 /* ACPI_NHLT_RESERVED_DSP */
-    "Type PDM",                         /* ACPI_NHLT_PDM */
-    "Type SSP",                         /* ACPI_NHLT_SSP */
-    "Reserved for SlimBus",             /* ACPI_NHLT_RESERVED_SLIMBUS */
-    "Reserved for SoundWire",           /* ACPI_NHLT_RESERVED_SOUNDWIRE */
-    "Unknown Link Type"                 /* Reserved */
-};
-
-static const char           *AcpiDmNhltDirectionNames[] =
-{
-    "Render",                           /* ACPI_NHLT_DIR_RENDER */
-    "Capture",                          /* ACPI_NHLT_DIR_CAPTURE */
-    "Render with Loopback",             /* ACPI_NHLT_DIR_RENDER_LOOPBACK */
-    "Feedback for Render",              /* ACPI_NHLT_DIR_RENDER_FEEDBACK */
-    "Unknown Direction"                 /* Reserved */
-};
-
-static const char           *AcpiDmNhltMicTypeNames[] =
-{
-    "Omnidirectional",                  /* ACPI_NHLT_MIC_OMNIDIRECTIONAL */
-    "Subcardioid",                      /* ACPI_NHLT_MIC_SUBCARDIOID */
-    "Cardioid",                         /* ACPI_NHLT_MIC_CARDIOID */
-    "SuperCardioid",                    /* ACPI_NHLT_MIC_SUPER_CARDIOID */
-    "HyperCardioid",                    /* ACPI_NHLT_MIC_HYPER_CARDIOID */
-    "8 Shaped",                         /* ACPI_NHLT_MIC_8_SHAPED */
-    "Reserved Mic Type",                /* Reserved */
-    "Vendor Defined",                   /* ACPI_NHLT_MIC_VENDOR_DEFINED */
-    "Unknown Mic Type"                  /* ACPI_NHLT_MIC_RESERVED */
-};
-
-static const char           *AcpiDmNhltMicPositionNames[] =
-{
-    "Top",                              /* ACPI_NHLT_MIC_POSITION_TOP */
-    "Bottom",                           /* ACPI_NHLT_MIC_POSITION_BOTTOM */
-    "Left",                             /* ACPI_NHLT_MIC_POSITION_LEFT */
-    "Right",                            /* ACPI_NHLT_MIC_POSITION_RIGHT */
-    "Front",                            /* ACPI_NHLT_MIC_POSITION_FRONT */
-    "Back",                             /* ACPI_NHLT_MIC_POSITION_BACK */
-    "Unknown Mic Position"              /* 6 and above are reserved */
-};
-
-static const char           *AcpiDmNhltMicArrayTypeNames[] =
-{
-    "Unknown Array Type",               /* ACPI_NHLT_ARRAY_TYPE_RESERVED */
-    "Small Linear 2-element",           /* ACPI_NHLT_SMALL_LINEAR_2ELEMENT */
-    "Big Linear 2-element",             /* ACPI_NHLT_BIG_LINEAR_2ELEMENT */
-    "Linear 4-element 1st Geometry",    /* ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT */
-    "Planar L-shaped 4-element",        /* ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT */
-    "Linear 4-element 2nd Geometry",    /* ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT */
-    "Vendor Defined"                    /* ACPI_NHLT_VENDOR_DEFINED */
-};
-
-static const char           *AcpiDmNhltConfigTypeNames[] =
-{
-    "Generic Type",                     /* ACPI_NHLT_CONFIG_TYPE_GENERIC */
-    "Microphone Array",                 /* ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY */
-    "Reserved",                         /* ACPI_NHLT_CONFIG_TYPE_RESERVED */
-    "Render Feedback",                  /* ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK */
-    "Unknown Config Type"               /* ACPI_NHLT_CONFIG_TYPE_RESERVED */
-};
-
 static const char           *AcpiDmPcctSubnames[] =
 {
     "Generic Communications Subspace",  /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */
@@ -539,6 +539,7 @@ static const char           *AcpiDmSratSubnames[] =
     "GIC ITS Affinity",             /* Acpi 6.2 */
     "Generic Initiator Affinity",   /* Acpi 6.3 */
     "Generic Port Affinity",        /* Acpi 6.4 */
+    "RINTC Affinity",               /* Acpi 6.6 */
     "Unknown Subtable Type"         /* Reserved */
 };
 
@@ -629,6 +630,14 @@ static const char           *AcpiDmGasAccessWidth[] =
     "Unknown Width Encoding"
 };
 
+static const char           *AcpiDmRhctSubnames[] =
+{
+    "RISC-V ISA string structure",  /* ACPI_RHCT_ISA_STRING */
+    "RISC-V CMO node structure",    /* ACPI_RHCT_CMO_NODE */
+    "RISC-V MMU node structure",    /* ACPI_RHCT_MMU_NODE */
+    "RISC-V Hart Info structure",   /* ACPI_RHCT_HART_INFO */
+};
+
 
 /*******************************************************************************
  *
@@ -650,11 +659,15 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
 {
     {ACPI_SIG_AEST, NULL,                   AcpiDmDumpAest, DtCompileAest,  TemplateAest},
     {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi,    NULL,           NULL,           TemplateAgdi},
+    {ACPI_SIG_APMT, NULL,                   AcpiDmDumpApmt, DtCompileApmt,  TemplateApmt},
     {ACPI_SIG_ASF,  NULL,                   AcpiDmDumpAsf,  DtCompileAsf,   TemplateAsf},
+    {ACPI_SIG_ASPT, NULL,                   AcpiDmDumpAspt, DtCompileAspt,  TemplateAspt},
     {ACPI_SIG_BDAT, AcpiDmTableInfoBdat,    NULL,           NULL,           TemplateBdat},
     {ACPI_SIG_BERT, AcpiDmTableInfoBert,    NULL,           NULL,           TemplateBert},
     {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt,    NULL,           NULL,           TemplateBgrt},
     {ACPI_SIG_BOOT, AcpiDmTableInfoBoot,    NULL,           NULL,           TemplateBoot},
+    {ACPI_SIG_CCEL, AcpiDmTableInfoCcel,    NULL,           NULL,           TemplateCcel},
+    {ACPI_SIG_CDAT, NULL,                   AcpiDmDumpCdat, NULL,           TemplateCdat},
     {ACPI_SIG_CEDT, NULL,                   AcpiDmDumpCedt, DtCompileCedt,  TemplateCedt},
     {ACPI_SIG_CPEP, NULL,                   AcpiDmDumpCpep, DtCompileCpep,  TemplateCpep},
     {ACPI_SIG_CSRT, NULL,                   AcpiDmDumpCsrt, DtCompileCsrt,  TemplateCsrt},
@@ -664,6 +677,7 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
     {ACPI_SIG_DRTM, NULL,                   AcpiDmDumpDrtm, DtCompileDrtm,  TemplateDrtm},
     {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt,    NULL,           NULL,           TemplateEcdt},
     {ACPI_SIG_EINJ, NULL,                   AcpiDmDumpEinj, DtCompileEinj,  TemplateEinj},
+    {ACPI_SIG_ERDT, NULL,                   AcpiDmDumpErdt, DtCompileErdt,  TemplateErdt},
     {ACPI_SIG_ERST, NULL,                   AcpiDmDumpErst, DtCompileErst,  TemplateErst},
     {ACPI_SIG_FADT, NULL,                   AcpiDmDumpFadt, DtCompileFadt,  TemplateFadt},
     {ACPI_SIG_FPDT, NULL,                   AcpiDmDumpFpdt, DtCompileFpdt,  TemplateFpdt},
@@ -677,11 +691,13 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
     {ACPI_SIG_MADT, NULL,                   AcpiDmDumpMadt, DtCompileMadt,  TemplateMadt},
     {ACPI_SIG_MCFG, NULL,                   AcpiDmDumpMcfg, DtCompileMcfg,  TemplateMcfg},
     {ACPI_SIG_MCHI, AcpiDmTableInfoMchi,    NULL,           NULL,           TemplateMchi},
+    {ACPI_SIG_MPAM, NULL,                   AcpiDmDumpMpam, DtCompileMpam,  TemplateMpam},
     {ACPI_SIG_MPST, AcpiDmTableInfoMpst,    AcpiDmDumpMpst, DtCompileMpst,  TemplateMpst},
+    {ACPI_SIG_MRRM, NULL,                   AcpiDmDumpMrrm, DtCompileMrrm,  TemplateMrrm},
     {ACPI_SIG_MSCT, NULL,                   AcpiDmDumpMsct, DtCompileMsct,  TemplateMsct},
     {ACPI_SIG_MSDM, NULL,                   AcpiDmDumpSlic, DtCompileSlic,  TemplateMsdm},
     {ACPI_SIG_NFIT, AcpiDmTableInfoNfit,    AcpiDmDumpNfit, DtCompileNfit,  TemplateNfit},
-    {ACPI_SIG_NHLT, AcpiDmTableInfoNhlt,    AcpiDmDumpNhlt, DtCompileNhlt,  TemplateNhlt},
+    {ACPI_SIG_NHLT, NULL,                   NULL,           NULL,           NULL},
     {ACPI_SIG_PCCT, AcpiDmTableInfoPcct,    AcpiDmDumpPcct, DtCompilePcct,  TemplatePcct},
     {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt,    AcpiDmDumpPdtt, DtCompilePdtt,  TemplatePdtt},
     {ACPI_SIG_PHAT, NULL,                   AcpiDmDumpPhat, DtCompilePhat,  TemplatePhat},
@@ -689,7 +705,10 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
     {ACPI_SIG_PPTT, NULL,                   AcpiDmDumpPptt, DtCompilePptt,  TemplatePptt},
     {ACPI_SIG_PRMT, NULL,                   AcpiDmDumpPrmt, DtCompilePrmt,  TemplatePrmt},
     {ACPI_SIG_RASF, AcpiDmTableInfoRasf,    NULL,           NULL,           TemplateRasf},
+    {ACPI_SIG_RAS2, AcpiDmTableInfoRas2,    AcpiDmDumpRas2, DtCompileRas2,  TemplateRas2},
     {ACPI_SIG_RGRT, NULL,                   AcpiDmDumpRgrt, DtCompileRgrt,  TemplateRgrt},
+    {ACPI_SIG_RHCT, NULL,                   AcpiDmDumpRhct, DtCompileRhct,  TemplateRhct},
+    {ACPI_SIG_RIMT, NULL,                   AcpiDmDumpRimt, DtCompileRimt,  TemplateRimt},
     {ACPI_SIG_RSDT, NULL,                   AcpiDmDumpRsdt, DtCompileRsdt,  TemplateRsdt},
     {ACPI_SIG_S3PT, NULL,                   NULL,           NULL,           TemplateS3pt},
     {ACPI_SIG_SBST, AcpiDmTableInfoSbst,    NULL,           NULL,           TemplateSbst},
@@ -702,6 +721,7 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
     {ACPI_SIG_SRAT, NULL,                   AcpiDmDumpSrat, DtCompileSrat,  TemplateSrat},
     {ACPI_SIG_STAO, NULL,                   AcpiDmDumpStao, DtCompileStao,  TemplateStao},
     {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl,    AcpiDmDumpSvkl, DtCompileSvkl,  TemplateSvkl},
+    {ACPI_SIG_SWFT, NULL,                   NULL,           NULL,           NULL},
     {ACPI_SIG_TCPA, NULL,                   AcpiDmDumpTcpa, DtCompileTcpa,  TemplateTcpa},
     {ACPI_SIG_TDEL, AcpiDmTableInfoTdel,    NULL,           NULL,           TemplateTdel},
     {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2,    AcpiDmDumpTpm2, DtCompileTpm2,  TemplateTpm2},
@@ -719,44 +739,6 @@ const ACPI_DMTABLE_DATA     AcpiDmTableData[] =
 };
 
 
-/*******************************************************************************
- *
- * FUNCTION:    AcpiDmGenerateChecksum
- *
- * PARAMETERS:  Table               - Pointer to table to be checksummed
- *              Length              - Length of the table
- *              OriginalChecksum    - Value of the checksum field
- *
- * RETURN:      8 bit checksum of buffer
- *
- * DESCRIPTION: Computes an 8 bit checksum of the table.
- *
- ******************************************************************************/
-
-UINT8
-AcpiDmGenerateChecksum (
-    void                    *Table,
-    UINT32                  Length,
-    UINT8                   OriginalChecksum)
-{
-    UINT8                   Checksum;
-
-
-    /* Sum the entire table as-is */
-
-    Checksum = AcpiTbChecksum ((UINT8 *) Table, Length);
-
-    /* Subtract off the existing checksum value in the table */
-
-    Checksum = (UINT8) (Checksum - OriginalChecksum);
-
-    /* Compute the final checksum */
-
-    Checksum = (UINT8) (0 - Checksum);
-    return (Checksum);
-}
-
-
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmGetTableData
@@ -831,7 +813,7 @@ AcpiDmDumpDataTable (
 
     /*
      * Handle tables that don't use the common ACPI table header structure.
-     * Currently, these are the FACS, RSDP, and S3PT.
+     * Currently, these are the FACS, RSDP, S3PT and CDAT.
      */
     if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
     {
@@ -851,6 +833,28 @@ AcpiDmDumpDataTable (
     {
         Length = AcpiDmDumpS3pt (Table);
     }
+    else if (!AcpiUtValidNameseg (Table->Signature))
+    {
+        /*
+         * For CDAT we are assuming that there should be at least one non-ASCII
+         * byte in the (normally) 4-character Signature field (at least the
+         * high-order byte should be zero).
+         */
+        if (AcpiGbl_CDAT)
+        {
+            /*
+             * Invalid signature and <-ds CDAT> was specified on the command line.
+             * Therefore, we have a CDAT table.
+             */
+            AcpiDmDumpCdat (Table);
+        }
+        else
+        {
+            fprintf (stderr, "Table has an invalid signature\n");
+        }
+
+        return;
+    }
     else
     {
         /*
@@ -974,7 +978,7 @@ AcpiDmLineHeader (
     {
         if (ByteLength)
         {
-            AcpiOsPrintf ("[%3.3Xh %4.4d% 4d] %28s : ",
+            AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %27s : ",
                 Offset, Offset, ByteLength, Name);
         }
         else
@@ -1016,12 +1020,12 @@ AcpiDmLineHeader2 (
     {
         if (ByteLength)
         {
-            AcpiOsPrintf ("[%3.3Xh %4.4d %3d] %24s %3d : ",
+            AcpiOsPrintf ("[%3.3Xh %4.4u %3.3Xh] %24s %3d : ",
                 Offset, Offset, ByteLength, Name, Value);
         }
         else
         {
-            AcpiOsPrintf ("[%3.3Xh %4.4d   ] %24s %3d : ",
+            AcpiOsPrintf ("[%3.3Xh %4.4u   ] %24s %3d : ",
                 Offset, Offset, Name, Value);
         }
     }
@@ -1103,7 +1107,8 @@ AcpiDmDumpTable (
         {
             AcpiOsPrintf (
                 "/**** ACPI table terminates "
-                "in the middle of a data structure! (dump table) */\n");
+                "in the middle of a data structure! (dump table)\n"
+                "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength);
             return (AE_BAD_DATA);
         }
 
@@ -1120,12 +1125,7 @@ AcpiDmDumpTable (
         case ACPI_DMT_IVRS_DE:
         case ACPI_DMT_GTDT:
         case ACPI_DMT_MADT:
-        case ACPI_DMT_NHLT1:
-        case ACPI_DMT_NHLT1a:
-        case ACPI_DMT_NHLT1b:
-        case ACPI_DMT_NHLT1c:
-        case ACPI_DMT_NHLT1d:
-        case ACPI_DMT_NHLT1f:
+        case ACPI_DMT_MPAM_LOCATOR:
         case ACPI_DMT_PCCT:
         case ACPI_DMT_PMTT:
         case ACPI_DMT_PPTT:
@@ -1137,6 +1137,7 @@ AcpiDmDumpTable (
         case ACPI_DMT_AEST_XFACE:
         case ACPI_DMT_AEST_XRUPT:
         case ACPI_DMT_ASF:
+        case ACPI_DMT_CDAT:
         case ACPI_DMT_HESTNTYP:
         case ACPI_DMT_FADTPM:
         case ACPI_DMT_EINJACT:
@@ -1149,13 +1150,15 @@ AcpiDmDumpTable (
             ByteLength = 1;
             break;
 
+        case ACPI_DMT_ASPT:
         case ACPI_DMT_UINT16:
         case ACPI_DMT_DMAR:
+        case ACPI_DMT_ERDT:
         case ACPI_DMT_HEST:
         case ACPI_DMT_HMAT:
         case ACPI_DMT_NFIT:
-        case ACPI_DMT_NHLT1e:
         case ACPI_DMT_PHAT:
+        case ACPI_DMT_RHCT:
 
             ByteLength = 2;
             break;
@@ -1204,6 +1207,11 @@ AcpiDmDumpTable (
             ByteLength = 10;
             break;
 
+        case ACPI_DMT_BUF11:
+
+            ByteLength = 11;
+            break;
+
         case ACPI_DMT_BUF12:
 
             ByteLength = 12;
@@ -1220,6 +1228,26 @@ AcpiDmDumpTable (
             ByteLength = 18;
             break;
 
+        case ACPI_DMT_BUF24:
+
+            ByteLength = 24;
+            break;
+
+        case ACPI_DMT_BUF26:
+
+            ByteLength = 26;
+            break;
+
+        case ACPI_DMT_BUF32:
+
+            ByteLength = 32;
+            break;
+
+        case ACPI_DMT_BUF112:
+
+            ByteLength = 112;
+            break;
+
         case ACPI_DMT_BUF128:
 
             ByteLength = 128;
@@ -1361,6 +1389,11 @@ AcpiDmDumpTable (
             AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03);
             break;
 
+        case ACPI_DMT_FLAGS8_2:
+
+            AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF);
+            break;
+
         case ACPI_DMT_FLAGS4:
 
             AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03);
@@ -1423,9 +1456,14 @@ AcpiDmDumpTable (
 
         case ACPI_DMT_BUF7:
         case ACPI_DMT_BUF10:
+        case ACPI_DMT_BUF11:
         case ACPI_DMT_BUF12:
         case ACPI_DMT_BUF16:
         case ACPI_DMT_BUF18:
+        case ACPI_DMT_BUF24:
+        case ACPI_DMT_BUF26:
+        case ACPI_DMT_BUF32:
+        case ACPI_DMT_BUF112:
         case ACPI_DMT_BUF128:
             /*
              * Buffer: Size depends on the opcode and was set above.
@@ -1514,7 +1552,7 @@ AcpiDmDumpTable (
             /* Checksum, display and validate */
 
             AcpiOsPrintf ("%2.2X", *Target);
-            Temp8 = AcpiDmGenerateChecksum (Table,
+            Temp8 = AcpiUtGenerateChecksum (Table,
                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
                 ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
 
@@ -1647,6 +1685,17 @@ AcpiDmDumpTable (
                 AcpiDmAestXruptNames[Temp8]);
             break;
 
+        case ACPI_DMT_ASPT:
+            /* ASPT subtable types */
+            Temp16 = ACPI_GET16(Target);
+            if (Temp16 > ACPI_ASPT_TYPE_UNKNOWN)
+            {
+                Temp16 = ACPI_ASPT_TYPE_UNKNOWN;
+            }
+
+            AcpiOsPrintf(UINT16_FORMAT, Temp16, AcpiDmAsptSubnames[Temp16]);
+            break;
+
         case ACPI_DMT_ASF:
 
             /* ASF subtable types */
@@ -1660,6 +1709,20 @@ AcpiDmDumpTable (
             AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]);
             break;
 
+        case ACPI_DMT_CDAT:
+
+            /* CDAT subtable types */
+
+            Temp8 = *Target;
+            if (Temp8 > ACPI_CDAT_TYPE_RESERVED)
+            {
+                Temp8 = ACPI_CDAT_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT8_FORMAT, *Target,
+                AcpiDmCdatSubnames[Temp8]);
+            break;
+
         case ACPI_DMT_CEDT:
 
             /* CEDT subtable types */
@@ -1744,6 +1807,20 @@ AcpiDmDumpTable (
                 AcpiDmErstActions[Temp8]);
             break;
 
+        case ACPI_DMT_ERDT:
+
+            /* ERDT subtable types */
+
+            Temp16 = *Target;
+            if (Temp16 > ACPI_ERDT_TYPE_RESERVED)
+            {
+                Temp16 = ACPI_ERDT_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT8_FORMAT, *Target,
+                AcpiDmErdtSubnames[Temp16]);
+            break;
+
         case ACPI_DMT_ERSTINST:
 
             /* ERST Instruction types */
@@ -1850,144 +1927,44 @@ AcpiDmDumpTable (
             /* MADT subtable types */
 
             Temp8 = *Target;
-            if (Temp8 > ACPI_MADT_TYPE_RESERVED)
+            if ((Temp8 >= ACPI_MADT_TYPE_RESERVED) && (Temp8 < ACPI_MADT_TYPE_OEM_RESERVED))
             {
                 Temp8 = ACPI_MADT_TYPE_RESERVED;
             }
-
-            AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmMadtSubnames[Temp8]);
-            break;
-
-        case ACPI_DMT_NFIT:
-
-            /* NFIT subtable types */
-
-            Temp16 = ACPI_GET16 (Target);
-            if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
-            {
-                Temp16 = ACPI_NFIT_TYPE_RESERVED;
-            }
-
-            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
-                AcpiDmNfitSubnames[Temp16]);
-            break;
-
-        case ACPI_DMT_NHLT1:
-
-            /* NHLT link types */
-
-            Temp8 = *Target;
-            if (Temp8 > ACPI_NHLT_TYPE_RESERVED)
-            {
-                Temp8 = ACPI_NHLT_TYPE_RESERVED;
-            }
-
-            AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmNhltLinkTypeNames[Temp8]);
-            break;
-
-        case ACPI_DMT_NHLT1a:
-
-            /* NHLT direction */
-
-            Temp8 = *Target;
-            if (Temp8 > ACPI_NHLT_DIR_RESERVED)
-            {
-                Temp8 = ACPI_NHLT_DIR_RESERVED;
-            }
-
-            AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmNhltDirectionNames[Temp8]);
-            break;
-
-        case ACPI_DMT_NHLT1b:
-
-            /* NHLT microphone type */
-
-            Temp8 = *Target;
-            if (Temp8 > ACPI_NHLT_MIC_RESERVED)
+            else if (Temp8 >= ACPI_MADT_TYPE_OEM_RESERVED)
             {
-                Temp8 = ACPI_NHLT_MIC_RESERVED;
+                Temp8 = ACPI_MADT_TYPE_RESERVED + 1;
             }
-
             AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmNhltMicTypeNames[Temp8]);
+                AcpiDmMadtSubnames[Temp8]);
             break;
 
-        case ACPI_DMT_NHLT1c:
+        case ACPI_DMT_MPAM_LOCATOR:
 
-            /* NHLT microphone position */
+            /* MPAM subtable locator types */
 
             Temp8 = *Target;
-            if (Temp8 > ACPI_NHLT_MIC_POSITION_RESERVED)
+            if (Temp8 > ACPI_MPAM_LOCATION_TYPE_INTERCONNECT)
             {
-                Temp8 = ACPI_NHLT_MIC_POSITION_RESERVED;
+                Temp8 = ACPI_MPAM_LOCATION_TYPE_INTERCONNECT + 1;
             }
 
             AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmNhltMicPositionNames[Temp8]);
+                AcpiDmMpamSubnames[Temp8]);
             break;
 
-        case ACPI_DMT_NHLT1d:
-
-            /* NHLT microphone array type */
-
-            Temp8 = *Target & ACPI_NHLT_ARRAY_TYPE_MASK;
-            if (Temp8 < ACPI_NHLT_ARRAY_TYPE_RESERVED)
-            {
-                Temp8 = ACPI_NHLT_ARRAY_TYPE_RESERVED;
-            }
-
-            AcpiOsPrintf (UINT8_FORMAT_NO_NEWLINE, *Target,
-                AcpiDmNhltMicArrayTypeNames[Temp8 - ACPI_NHLT_ARRAY_TYPE_RESERVED]);
-
-            Temp8 = *Target;
-            if (Temp8 & ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT)
-            {
-                AcpiOsPrintf (" [%s]", "SNR and Sensitivity");
-            }
-
-            AcpiOsPrintf ("\n");
-            break;
-
-        case ACPI_DMT_NHLT1e:
+        case ACPI_DMT_NFIT:
 
-            /* NHLT Endpoint Device ID */
+            /* NFIT subtable types */
 
             Temp16 = ACPI_GET16 (Target);
-            if (Temp16 == 0xAE20)
-            {
-                Name = "PDM DMIC";
-            }
-            else if (Temp16 == 0xAE30)
-            {
-                Name = "BT Sideband";
-            }
-            else if (Temp16 == 0xAE34)
-            {
-                Name = "I2S/TDM Codecs";
-            }
-            else
-            {
-                Name = "Unknown Device ID";
-            }
-
-            AcpiOsPrintf (UINT16_FORMAT, Temp16, Name);
-            break;
-
-        case ACPI_DMT_NHLT1f:
-
-            /* NHLT ConfigType field */
-
-            Temp8 = *Target;
-            if (Temp8 > ACPI_NHLT_CONFIG_TYPE_RESERVED)
+            if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
             {
-                Temp8 = ACPI_NHLT_CONFIG_TYPE_RESERVED;
+                Temp16 = ACPI_NFIT_TYPE_RESERVED;
             }
 
-            AcpiOsPrintf (UINT8_FORMAT, *Target,
-                AcpiDmNhltConfigTypeNames[Temp8]);
+            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
+                AcpiDmNfitSubnames[Temp16]);
             break;
 
         case ACPI_DMT_PCCT:
@@ -2006,15 +1983,15 @@ AcpiDmDumpTable (
 
         case ACPI_DMT_PHAT:
 
-            /* PMTT subtable types */
+            /* PHAT subtable types */
 
-            Temp16 = *Target;
+            Temp16 = ACPI_GET16 (Target);
             if (Temp16 > ACPI_PHAT_TYPE_RESERVED)
             {
                 Temp16 = ACPI_PHAT_TYPE_RESERVED;
             }
 
-            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16(Target),
+            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
                 AcpiDmPhatSubnames[Temp16]);
             break;
 
@@ -2058,7 +2035,7 @@ AcpiDmDumpTable (
                 break;
             }
 
-            AcpiDmDumpUnicode (Table, CurrentOffset, ByteLength);
+            AcpiDmDumpUnicode (Table, 0, ByteLength);
             break;
 
         case ACPI_DMT_RAW_BUFFER:
@@ -2088,6 +2065,20 @@ AcpiDmDumpTable (
                 AcpiDmRgrtSubnames[Temp8]);
             break;
 
+        case ACPI_DMT_RHCT:
+
+            /* RHCT subtable types */
+
+            Temp16 = ACPI_GET16 (Target);
+            if (Temp16 == ACPI_RHCT_NODE_TYPE_HART_INFO)
+            {
+                Temp16 = ACPI_RHCT_NODE_TYPE_RESERVED;
+            }
+
+            AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
+                AcpiDmRhctSubnames[Temp16]);
+            break;
+
         case ACPI_DMT_SDEV:
 
             /* SDEV subtable types */
diff --git a/sys/contrib/dev/acpica/source/common/dmtables.c b/sys/contrib/dev/acpica/source/common/dmtables.c
index fa04e0c889..e0cc8ac5c0 100644
--- a/sys/contrib/dev/acpica/source/common/dmtables.c
+++ b/sys/contrib/dev/acpica/source/common/dmtables.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -190,7 +190,7 @@ extern ACPI_PARSE_OBJECT    *AcpiGbl_ParseOpRoot;
  * RETURN:      None
  *
  * DESCRIPTION: Create the disassembler header, including ACPICA signon with
- *              current time and date.
+ *              optional current time and date.
  *
  *****************************************************************************/
 
@@ -202,8 +202,6 @@ AdDisassemblerHeader (
     time_t                  Timer;
 
 
-    time (&Timer);
-
     /* Header and input table info */
 
     AcpiOsPrintf ("/*\n");
@@ -225,7 +223,15 @@ AdDisassemblerHeader (
         }
     }
 
-    AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer));
+    if (AslGbl_Deterministic)
+    {
+        AcpiOsPrintf (" * Disassembly of %s\n", Filename);
+    }
+    else
+    {
+        time (&Timer);
+        AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer));
+    }
     AcpiOsPrintf (" *\n");
 }
 
@@ -296,7 +302,7 @@ AdCreateTableHeader (
 
     AcpiOsPrintf ("\n *     Checksum         0x%2.2X",        Table->Checksum);
 
-    Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
+    Checksum = AcpiUtChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
     if (Checksum)
     {
         AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X",
diff --git a/sys/contrib/dev/acpica/source/common/dmtbdump.c b/sys/contrib/dev/acpica/source/common/dmtbdump.c
index 86c90d67b6..2d81c11a47 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbdump.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbdump.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -266,14 +266,7 @@ AcpiDmDumpBuffer (
         /* Done with that line. */
         /* Close the comment and insert a backslash - line continuation character */
 
-        if (Length > 16)
-        {
-            AcpiOsPrintf (" */\\");
-        }
-        else
-        {
-            AcpiOsPrintf (" */\\");
-        }
+        AcpiOsPrintf (" */\\");
 
         i += 16; /* Point to next line */
     }
@@ -384,7 +377,7 @@ AcpiDmDumpRsdp (
 
     /* Validate the first checksum */
 
-    Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON),
+    Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON),
         Rsdp->Checksum);
     if (Checksum != Rsdp->Checksum)
     {
@@ -405,7 +398,7 @@ AcpiDmDumpRsdp (
 
         /* Validate the extended checksum over entire RSDP */
 
-        Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP),
+        Checksum = AcpiUtGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP),
             Rsdp->ExtendedChecksum);
         if (Checksum != Rsdp->ExtendedChecksum)
         {
@@ -569,7 +562,7 @@ AcpiDmDumpFadt (
 
         /* Check for FADT revision 6 fields and up (ACPI 6.0+) */
 
-        if (Table->Length > ACPI_FADT_V3_SIZE)
+        if (Table->Length > ACPI_FADT_V5_SIZE)
         {
             Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
                 AcpiDmTableInfoFadt6);
@@ -642,6 +635,11 @@ AcpiDmValidateFadtLength (
         ExpectedLength = ACPI_FADT_V5_SIZE;
         break;
 
+    case 6:
+
+        ExpectedLength = ACPI_FADT_V6_SIZE;
+        break;
+
     default:
 
         return;
diff --git a/sys/contrib/dev/acpica/source/common/dmtbdump1.c b/sys/contrib/dev/acpica/source/common/dmtbdump1.c
index fd5e2fd99b..d0c5e8363e 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbdump1.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbdump1.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -153,6 +153,7 @@
 #include "accommon.h"
 #include "acdisasm.h"
 #include "actables.h"
+#include "aslcompiler.h"
 
 /* This module used for application-level code only */
 
@@ -194,6 +195,9 @@ AcpiDmDumpAest (
     ACPI_DMTABLE_INFO       *InfoTable;
     ACPI_SIZE               Length;
     UINT8                   Type;
+    UINT8                   Revision = Table->Revision;
+    UINT32                  Count;
+    ACPI_AEST_NODE_INTERFACE_HEADER *InterfaceHeader;
 
 
     /* Very small, generic main table. AEST consists of mostly subtables */
@@ -233,8 +237,22 @@ AcpiDmDumpAest (
             break;
 
         case ACPI_AEST_VENDOR_ERROR_NODE:
-            InfoTable = AcpiDmTableInfoAestVendorError;
-            Length = sizeof (ACPI_AEST_VENDOR);
+            switch (Revision)
+            {
+            case 1:
+                InfoTable = AcpiDmTableInfoAestVendorError;
+                Length = sizeof (ACPI_AEST_VENDOR);
+                break;
+
+            case 2:
+                InfoTable = AcpiDmTableInfoAestVendorV2Error;
+                Length = sizeof (ACPI_AEST_VENDOR_V2);
+                break;
+
+            default:
+                AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision);
+                return;
+            }
             break;
 
         case ACPI_AEST_GIC_ERROR_NODE:
@@ -242,6 +260,16 @@ AcpiDmDumpAest (
             Length = sizeof (ACPI_AEST_GIC);
             break;
 
+        case ACPI_AEST_PCIE_ERROR_NODE:
+            InfoTable = AcpiDmTableInfoAestPCIeError;
+            Length = sizeof (ACPI_AEST_PCIE);
+            break;
+
+        case ACPI_AEST_PROXY_ERROR_NODE:
+            InfoTable = AcpiDmTableInfoAestProxyError;
+            Length = sizeof (ACPI_AEST_PROXY);
+            break;
+
         /* Error case below */
         default:
 
@@ -334,8 +362,57 @@ AcpiDmDumpAest (
             return;
         }
 
-        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
-            sizeof (ACPI_AEST_NODE_INTERFACE), AcpiDmTableInfoAestXface);
+        if (Revision == 1)
+        {
+            InfoTable = AcpiDmTableInfoAestXface;
+            Length = sizeof (ACPI_AEST_NODE_INTERFACE);
+        }
+        else if (Revision == 2)
+        {
+            InfoTable = AcpiDmTableInfoAestXfaceHeader;
+            Length = sizeof (ACPI_AEST_NODE_INTERFACE_HEADER);
+
+            Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            Offset += Length;
+
+            InterfaceHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER, Subtable);
+            switch (InterfaceHeader->GroupFormat)
+	        {
+            case ACPI_AEST_NODE_GROUP_FORMAT_4K:
+                InfoTable = AcpiDmTableInfoAestXface4k;
+                Length = sizeof (ACPI_AEST_NODE_INTERFACE_4K);
+                break;
+
+            case ACPI_AEST_NODE_GROUP_FORMAT_16K:
+                InfoTable = AcpiDmTableInfoAestXface16k;
+                Length = sizeof (ACPI_AEST_NODE_INTERFACE_16K);
+                break;
+
+            case ACPI_AEST_NODE_GROUP_FORMAT_64K:
+                InfoTable = AcpiDmTableInfoAestXface64k;
+                Length = sizeof (ACPI_AEST_NODE_INTERFACE_64K);
+                break;
+
+            default:
+                AcpiOsPrintf ("\n**** Unknown AEST Interface Group Format 0x%X\n",
+                    InterfaceHeader->GroupFormat);
+                return;
+            }
+
+            Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
+        }
+        else
+        {
+            AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision);
+            return;
+        }
+
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable);
         if (ACPI_FAILURE (Status))
         {
             return;
@@ -344,22 +421,36 @@ AcpiDmDumpAest (
         /* Point past the interface structure */
 
         AcpiOsPrintf ("\n");
-        Offset += sizeof (ACPI_AEST_NODE_INTERFACE);
+        Offset += Length;
 
         /* Dump the entire interrupt structure array, if present */
 
         if (NodeHeader->NodeInterruptOffset)
         {
-            Length = NodeHeader->NodeInterruptCount;
+            Count = NodeHeader->NodeInterruptCount;
             Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
 
-            while (Length)
+            while (Count)
             {
                 /* Dump the interrupt structure */
 
+                switch (Revision) {
+                case 1:
+                    InfoTable = AcpiDmTableInfoAestXrupt;
+                    Length = sizeof (ACPI_AEST_NODE_INTERRUPT);
+                    break;
+
+                case 2:
+                    InfoTable = AcpiDmTableInfoAestXruptV2;
+                    Length = sizeof (ACPI_AEST_NODE_INTERRUPT_V2);
+                    break;
+                default:
+                    AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n",
+                        Revision);
+                    return;
+                }
                 Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
-                    sizeof (ACPI_AEST_NODE_INTERRUPT),
-                    AcpiDmTableInfoAestXrupt);
+                    Length, InfoTable);
                 if (ACPI_FAILURE (Status))
                 {
                     return;
@@ -367,15 +458,77 @@ AcpiDmDumpAest (
 
                 /* Point to the next interrupt structure */
 
-                Offset += sizeof (ACPI_AEST_NODE_INTERRUPT);
+                Offset += Length;
                 Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
-                Length--;
+                Count--;
                 AcpiOsPrintf ("\n");
             }
         }
     }
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpApmt
+ *
+ * PARAMETERS:  Table               - A APMT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a APMT. This table type consists
+ *              of an open-ended number of subtables.
+ *
+ *
+ * APMT - ARM Performance Monitoring Unit table. Conforms to:
+ * ARM Performance Monitoring Unit Architecture 1.0 Platform Design Document
+ * ARM DEN0117 v1.0 November 25, 2021
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpApmt (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS              Status;
+    ACPI_APMT_NODE           *Subtable;
+    UINT32                   Length = Table->Length;
+    UINT32                   Offset = sizeof (ACPI_TABLE_APMT);
+    UINT32                   NodeNum = 0;
+
+    /* There is no main table (other than the standard ACPI header) */
+
+    /* Subtables */
+
+    Subtable = ACPI_ADD_PTR (ACPI_APMT_NODE, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+
+        if (Subtable->Type >= ACPI_APMT_NODE_TYPE_COUNT)
+        {
+            AcpiOsPrintf ("\n**** Unknown APMT subtable type 0x%X\n",
+                Subtable->Type);
+            return;
+        }
+
+        AcpiOsPrintf ("/* APMT Node-%u */\n", NodeNum++);
+
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoApmtNode);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Point to next subtable */
+
+        Offset += Subtable->Length;
+        Subtable = ACPI_ADD_PTR (ACPI_APMT_NODE, Subtable,
+            Subtable->Length);
+        AcpiOsPrintf ("\n");
+    }
+}
+
 
 /*******************************************************************************
  *
@@ -546,6 +699,281 @@ AcpiDmDumpAsf (
     }
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpAspt
+ *
+ * PARAMETERS:  Table               - A ASPT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a ASPT table
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpAspt (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    UINT32                  Offset = sizeof (ACPI_TABLE_ASPT);
+    UINT32                  Length = Table->Length;
+    ACPI_ASPT_HEADER        *Subtable;
+    ACPI_DMTABLE_INFO       *InfoTable;
+    UINT16                   Type;
+
+    /* Main table */
+    Status = AcpiDmDumpTable(Length, 0, Table, 0, AcpiDmTableInfoAspt);
+
+    /* Subtables */
+
+    Subtable = ACPI_ADD_PTR (ACPI_ASPT_HEADER, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+
+        /* Common subtable header */
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoAsptHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        Type = Subtable->Type;
+
+        switch (Type)
+        {
+        case ACPI_ASPT_TYPE_GLOBAL_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt0;
+            break;
+
+        case ACPI_ASPT_TYPE_SEV_MBOX_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt1;
+            break;
+
+        case ACPI_ASPT_TYPE_ACPI_MBOX_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt2;
+            break;
+
+        default:
+
+            AcpiOsPrintf ("\n**** Unknown ASPT subtable type 0x%X\n",
+                Subtable->Type);
+            return;
+        }
+
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, InfoTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        AcpiOsPrintf ("\n");
+
+        /* Point to next subtable */
+        if (!Subtable->Length)
+        {
+            AcpiOsPrintf ("Invalid zero subtable header length\n");
+            return;
+        }
+
+        Offset += Subtable->Length;
+        Subtable = ACPI_ADD_PTR (ACPI_ASPT_HEADER, Subtable,
+            Subtable->Length);
+    }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpCdat
+ *
+ * PARAMETERS:  InTable             - A CDAT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a CDAT. This table type consists
+ *              of an open-ended number of subtables.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpCdat (
+    ACPI_TABLE_HEADER       *InTable)
+{
+    ACPI_TABLE_CDAT         *Table = ACPI_CAST_PTR (ACPI_TABLE_CDAT, InTable);
+    ACPI_STATUS             Status;
+    ACPI_CDAT_HEADER        *Subtable;
+    ACPI_TABLE_CDAT         *CdatTable = ACPI_CAST_PTR (ACPI_TABLE_CDAT, Table);
+    ACPI_DMTABLE_INFO       *InfoTable;
+    UINT32                  Length = CdatTable->Length;
+    UINT32                  Offset = sizeof (ACPI_TABLE_CDAT);
+    UINT32                  SubtableLength;
+    UINT32                  SubtableType;
+    INT32                   EntriesLength;
+
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Offset, 0, CdatTable, 0,
+        AcpiDmTableInfoCdatTableHdr);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, sizeof (ACPI_TABLE_CDAT));
+    while (Offset < Table->Length)
+    {
+        /* Dump the common subtable header */
+
+        DbgPrint (ASL_DEBUG_OUTPUT, "0) HeaderOffset: %X\n", Offset);
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            sizeof (ACPI_CDAT_HEADER), AcpiDmTableInfoCdatHeader);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Point past the common subtable header, decode the subtable type */
+
+        Offset += sizeof (ACPI_CDAT_HEADER);
+        SubtableType = Subtable->Type;
+
+        switch (Subtable->Type)
+        {
+        case ACPI_CDAT_TYPE_DSMAS:
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            SubtableLength = sizeof (ACPI_CDAT_DSMAS);
+
+            InfoTable = AcpiDmTableInfoCdat0;
+            break;
+
+        case ACPI_CDAT_TYPE_DSLBIS:
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            SubtableLength = sizeof (ACPI_CDAT_DSLBIS);
+            DbgPrint (ASL_DEBUG_OUTPUT, "1) Offset: %X\n", Offset);
+
+            InfoTable = AcpiDmTableInfoCdat1;
+            break;
+
+        case ACPI_CDAT_TYPE_DSMSCIS:
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            SubtableLength = sizeof (ACPI_CDAT_DSMSCIS);
+
+            InfoTable = AcpiDmTableInfoCdat2;
+            break;
+
+        case ACPI_CDAT_TYPE_DSIS:
+            DbgPrint (ASL_DEBUG_OUTPUT, "2) Offset: %X ", Offset);
+            SubtableLength = sizeof (ACPI_CDAT_DSIS);
+            DbgPrint (ASL_DEBUG_OUTPUT, "1) input pointer: %p\n", Table);
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            DbgPrint (ASL_DEBUG_OUTPUT, "1) output pointers: %p, %p, Offset: %X\n",
+                Table, Subtable, Offset);
+            DbgPrint (ASL_DEBUG_OUTPUT, "3) Offset: %X\n", Offset);
+
+            InfoTable = AcpiDmTableInfoCdat3;
+            break;
+
+        case ACPI_CDAT_TYPE_DSEMTS:
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            SubtableLength = sizeof (ACPI_CDAT_DSEMTS);
+
+            InfoTable = AcpiDmTableInfoCdat4;
+            break;
+
+        case ACPI_CDAT_TYPE_SSLBIS:
+            SubtableLength = Subtable->Length;
+
+            InfoTable = AcpiDmTableInfoCdat5;
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            break;
+
+        default:
+            fprintf (stderr, "ERROR: Unknown SubtableType: %X\n", Subtable->Type);
+            return;
+        }
+
+        DbgPrint (ASL_DEBUG_OUTPUT, "SubtableType: %X, Length: %X Actual "
+            "Length: %X Offset: %X tableptr: %p\n", SubtableType,
+            Subtable->Length, SubtableLength, Offset, Table);
+
+        /*
+         * Do the subtable-specific fields
+         */
+        Status = AcpiDmDumpTable (Length, Offset, Subtable, Offset, InfoTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        DbgPrint (ASL_DEBUG_OUTPUT, "Subtable Type: %X, Offset: %X, SubtableLength: %X\n",
+            SubtableType, Offset, SubtableLength);
+
+        /* Additional sub-subtables, dependent on the main subtable type */
+
+        switch (SubtableType)
+        {
+        case ACPI_CDAT_TYPE_SSLBIS:
+            Offset += sizeof (ACPI_CDAT_SSLBIS);
+            Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table,
+                Offset);
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "Case SSLBIS, Offset: %X, SubtableLength: %X "
+                "Subtable->Length %X\n", Offset, SubtableLength, Subtable->Length);
+
+            /* Generate the total length of all the SSLBE entries */
+
+            EntriesLength = SubtableLength - sizeof (ACPI_CDAT_HEADER) -
+                sizeof (ACPI_CDAT_SSLBIS);
+            DbgPrint (ASL_DEBUG_OUTPUT, "EntriesLength: %X, Offset: %X, Table->Length: %X\n",
+                EntriesLength, Offset, Table->Length);
+
+            /* Do each of the SSLBE Entries */
+
+            while ((EntriesLength > 0) && (Offset < Table->Length))
+            {
+                AcpiOsPrintf ("\n");
+
+                Status = AcpiDmDumpTable (Length, Offset, Subtable, Offset,
+                    AcpiDmTableInfoCdatEntries);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                EntriesLength -= sizeof (ACPI_CDAT_SSLBE);
+                Offset += sizeof (ACPI_CDAT_SSLBE);
+                Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+            }
+
+            SubtableLength = 0;
+            break;
+
+        default:
+            break;
+        }
+
+        DbgPrint (ASL_DEBUG_OUTPUT, "Offset: %X, Subtable Length: %X\n",
+            Offset, SubtableLength);
+
+        /* Point to next subtable */
+
+        Offset += SubtableLength;
+        Subtable = ACPI_ADD_PTR (ACPI_CDAT_HEADER, Table, Offset);
+    }
+
+    return;
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmDumpCedt
@@ -567,7 +995,6 @@ AcpiDmDumpCedt (
     ACPI_CEDT_HEADER        *Subtable;
     UINT32                  Length = Table->Length;
     UINT32                  Offset = sizeof (ACPI_TABLE_CEDT);
-    ACPI_DMTABLE_INFO       *InfoTable;
 
 
     /* There is no main table (other than the standard ACPI header) */
@@ -588,35 +1015,94 @@ AcpiDmDumpCedt (
         switch (Subtable->Type)
         {
         case ACPI_CEDT_TYPE_CHBS:
+            Status = AcpiDmDumpTable (Length, Offset, Subtable,
+                Subtable->Length, AcpiDmTableInfoCedt0);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+            break;
+
+        case ACPI_CEDT_TYPE_CFMWS:
+        {
+            ACPI_CEDT_CFMWS *ptr = (ACPI_CEDT_CFMWS *) Subtable;
+            unsigned int i, max;
+
+            if (ptr->InterleaveWays < 8)
+                max = 1 << (ptr->InterleaveWays);
+            else
+                max = 3 << (ptr->InterleaveWays - 8);
 
-            InfoTable = AcpiDmTableInfoCedt0;
+	    /* print out table with first "Interleave target" */
+
+            Status = AcpiDmDumpTable (Length, Offset, Subtable,
+                Subtable->Length, AcpiDmTableInfoCedt1);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            /* Now, print out any interleave targets beyond the first. */
+
+            for (i = 1; i < max; i++)
+            {
+                unsigned int loc_offset = Offset + (i * 4) + ACPI_OFFSET (ACPI_CEDT_CFMWS, InterleaveTargets);
+                unsigned int *trg = &(ptr->InterleaveTargets[i]);
+
+                Status = AcpiDmDumpTable (Length, loc_offset, trg,
+                        Subtable->Length, AcpiDmTableInfoCedt1_te);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+            }
             break;
+        }
 
-        default:
+        case ACPI_CEDT_TYPE_CXIMS:
+        {
+            ACPI_CEDT_CXIMS *ptr = (ACPI_CEDT_CXIMS *) Subtable;
+            unsigned int i, max = ptr->NrXormaps;
+
+            /* print out table with first "XOR Map" */
+
+            Status = AcpiDmDumpTable (Length, Offset, Subtable,
+                Subtable->Length, AcpiDmTableInfoCedt2);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            /* Now, print out any XOR Map beyond the first. */
+
+            for (i = 1; i < max; i++)
+            {
+                unsigned int loc_offset = Offset + (i * 1) + ACPI_OFFSET (ACPI_CEDT_CXIMS, XormapList);
+                UINT64 *trg = &(ptr->XormapList[i]);
 
+                Status = AcpiDmDumpTable (Length, loc_offset, trg,
+                        Subtable->Length, AcpiDmTableInfoCedt2_te);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+            }
+            break;
+        }
+
+        default:
             AcpiOsPrintf ("\n**** Unknown CEDT subtable type 0x%X\n\n",
                 Subtable->Type);
 
             /* Attempt to continue */
-
             if (!Subtable->Length)
             {
                 AcpiOsPrintf ("Invalid zero length subtable\n");
                 return;
             }
-            goto NextSubtable;
-        }
-
-        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-            Subtable->Length, InfoTable);
-        if (ACPI_FAILURE (Status))
-        {
-            return;
         }
 
-NextSubtable:
         /* Point to next subtable */
-
         Offset += Subtable->Length;
         Subtable = ACPI_ADD_PTR (ACPI_CEDT_HEADER, Subtable,
             Subtable->Length);
@@ -885,8 +1371,8 @@ AcpiDmDumpDbg2 (
 
         if (Subtable->OemDataOffset)
         {
-            Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
-                Table, Subtable->OemDataLength,
+            Status = AcpiDmDumpTable (Length, Subtable->OemDataOffset,
+                Subtable, Subtable->OemDataLength,
                 AcpiDmTableInfoDbg2OemData);
             if (ACPI_FAILURE (Status))
             {
@@ -988,6 +1474,18 @@ AcpiDmDumpDmar (
             ScopeOffset = sizeof (ACPI_DMAR_ANDD);
             break;
 
+        case ACPI_DMAR_TYPE_SATC:
+
+            InfoTable = AcpiDmTableInfoDmar5;
+            ScopeOffset = sizeof (ACPI_DMAR_SATC);
+            break;
+
+        case ACPI_DMAR_TYPE_SIDP:
+
+            InfoTable = AcpiDmTableInfoDmar6;
+            ScopeOffset = sizeof (ACPI_DMAR_SIDP);
+            break;
+
         default:
 
             AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
@@ -1225,6 +1723,233 @@ AcpiDmDumpEinj (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpErdt
+ *
+ * PARAMETERS:  Table               - A ERDT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a ERDT. This table type consists
+ *              of an open-ended number of subtables.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpErdt (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    ACPI_SUBTBL_HDR_16      *Subtable, *Subsubtable;
+    ACPI_ERDT_DACD_PATHS    *ScopeTable;
+    UINT32                  Offset = sizeof (ACPI_TABLE_ERDT);
+    UINT32                  Suboffset;
+    UINT32                  ScopeOffset;
+    UINT32                  SubsubtableLength = 0;
+    ACPI_DMTABLE_INFO       *InfoTable, *TrailEntries, *DacdEntries;
+    UINT32                  NumTrailers = 0;
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoErdt);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables */
+    Subtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Offset);
+    while (Offset < Table->Length)
+    {
+
+        /* Dump common header */
+
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoErdtHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoErdtRmdd);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Subtables of this RMDD table */
+
+        Suboffset = Offset + sizeof(ACPI_ERDT_RMDD);
+        Subsubtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Suboffset);
+        while (Suboffset < Offset + Subtable->Length)
+        {
+            AcpiOsPrintf ("\n");
+
+            TrailEntries = NULL;
+            DacdEntries = NULL;
+            switch (Subsubtable->Type)
+            {
+            case ACPI_ERDT_TYPE_CACD:
+                 InfoTable = AcpiDmTableInfoErdtCacd;
+                 TrailEntries = AcpiDmTableInfoErdtCacdX2apic;
+                 SubsubtableLength = sizeof(ACPI_ERDT_CACD);
+                 break;
+
+            case ACPI_ERDT_TYPE_DACD:
+                 InfoTable = AcpiDmTableInfoErdtDacd;
+                 DacdEntries = AcpiDmTableInfoErdtDacdScope;
+                 SubsubtableLength = sizeof(ACPI_ERDT_DACD);
+                 break;
+
+            case ACPI_ERDT_TYPE_CMRC:
+                 InfoTable = AcpiDmTableInfoErdtCmrc;
+                 break;
+
+            case ACPI_ERDT_TYPE_MMRC:
+                 InfoTable = AcpiDmTableInfoErdtMmrc;
+                 TrailEntries = AcpiDmTableInfoErdtMmrcCorrFactor;
+                 SubsubtableLength = sizeof(ACPI_ERDT_MMRC);
+                 break;
+
+            case ACPI_ERDT_TYPE_MARC:
+                 InfoTable = AcpiDmTableInfoErdtMarc;
+                 break;
+
+            case ACPI_ERDT_TYPE_CARC:
+                 InfoTable = AcpiDmTableInfoErdtCarc;
+                 break;
+
+            case ACPI_ERDT_TYPE_CMRD:
+                 InfoTable = AcpiDmTableInfoErdtCmrd;
+                 break;
+
+            case ACPI_ERDT_TYPE_IBRD:
+                 InfoTable = AcpiDmTableInfoErdtIbrd;
+                 TrailEntries = AcpiDmTableInfoErdtIbrdCorrFactor;
+                 SubsubtableLength = sizeof(ACPI_ERDT_IBRD);
+                 break;
+
+            case ACPI_ERDT_TYPE_IBAD:
+                 InfoTable = AcpiDmTableInfoErdtIbad;
+                 break;
+
+            case ACPI_ERDT_TYPE_CARD:
+                 InfoTable = AcpiDmTableInfoErdtCard;
+                 break;
+
+            default:
+                AcpiOsPrintf ("\n**** Unknown RMDD subtable type 0x%X\n",
+                    Subsubtable->Type);
+
+                /* Attempt to continue */
+
+                if (!Subsubtable->Length)
+                {
+                    AcpiOsPrintf ("Invalid zero length subtable\n");
+                    return;
+                }
+                goto NextSubsubtable;
+            }
+
+            /* Dump subtable header */
+
+            Status = AcpiDmDumpTable (Table->Length, Suboffset, Subsubtable,
+                Subsubtable->Length, AcpiDmTableInfoErdtHdr);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            /* Dump subtable body */
+
+            Status = AcpiDmDumpTable (Table->Length, Suboffset, Subsubtable,
+                Subsubtable->Length, InfoTable);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            /* CACD, MMRC, and IBRD subtables have simple flex array at end */
+
+            if (TrailEntries)
+            {
+                NumTrailers = 0;
+                while (NumTrailers < Subsubtable->Length - SubsubtableLength)
+                {
+
+                    /* Dump one flex array element */
+
+                    Status = AcpiDmDumpTable (Table->Length, Suboffset +
+                        SubsubtableLength + NumTrailers,
+                        ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Subsubtable,
+                            SubsubtableLength + NumTrailers),
+                        sizeof(UINT32), TrailEntries);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return;
+                    }
+                    NumTrailers += sizeof(UINT32);
+                }
+            }
+
+            /* DACD subtable has flex array of device agent structures */
+
+            if (DacdEntries) {
+                 ScopeOffset = Suboffset + SubsubtableLength;
+                 ScopeTable = ACPI_ADD_PTR (ACPI_ERDT_DACD_PATHS,
+                     Subsubtable, SubsubtableLength);
+                 while (ScopeOffset < Suboffset + Subsubtable->Length)
+                 {
+                     /* Dump one device agent structure */
+
+                     AcpiOsPrintf ("\n");
+                     Status = AcpiDmDumpTable (Table->Length, ScopeOffset,
+                         ScopeTable, ScopeTable->Header.Length, DacdEntries);
+                     if (ACPI_FAILURE (Status))
+                     {
+                         return;
+                     }
+
+                     /* Flex array of UINT8 for device path */
+
+                     NumTrailers = 0;
+                     while (NumTrailers < ScopeTable->Header.Length - sizeof(ACPI_ERDT_DACD_PATHS))
+                     {
+                         /* Dump one UINT8 of the device path */
+
+                         Status = AcpiDmDumpTable (Table->Length, ScopeOffset +
+                             sizeof(ACPI_ERDT_DACD_PATHS) + NumTrailers,
+                             ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, ScopeTable,
+                                 sizeof(*ScopeTable) + NumTrailers),
+                             sizeof(UINT32), AcpiDmTableInfoErdtDacdPath);
+                         if (ACPI_FAILURE (Status))
+                         {
+                             return;
+                         }
+                         NumTrailers++;
+                     }
+
+                     ScopeOffset += ScopeTable->Header.Length;
+                     ScopeTable = ACPI_ADD_PTR (ACPI_ERDT_DACD_PATHS,
+                         ScopeTable, ScopeTable->Header.Length);
+                 }
+            }
+NextSubsubtable:
+            Suboffset += Subsubtable->Length;
+            Subsubtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Table, Suboffset);
+        }
+
+        Offset += Subtable->Length;
+        Subtable = ACPI_ADD_PTR (ACPI_SUBTBL_HDR_16, Subtable,
+            Subtable->Length);
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmDumpErst
@@ -1753,7 +2478,7 @@ AcpiDmDumpHmat (
             return;
         }
 
-        /* Dump HMAT structure additionals */
+        /* Dump HMAT structure additional */
 
         switch (HmatStruct->Type)
         {
diff --git a/sys/contrib/dev/acpica/source/common/dmtbdump2.c b/sys/contrib/dev/acpica/source/common/dmtbdump2.c
index 04f7139fe9..f9145d7cb5 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbdump2.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbdump2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -149,6 +149,7 @@
  *
  *****************************************************************************/
 
+#include <wchar.h>
 #include "acpi.h"
 #include "accommon.h"
 #include "acdisasm.h"
@@ -203,9 +204,9 @@ AcpiDmDumpIort (
 
     Revision = Table->Revision;
 
-    /* Both IORT Rev E and E.a have known issues and are not supported */
+    /* IORT Revisions E, E.a and E.c have known issues and are not supported */
 
-    if (Revision == 1 || Revision == 2)
+    if (Revision == 1 || Revision == 2 || Revision == 4)
     {
         AcpiOsPrintf ("\n**** Unsupported IORT revision 0x%X\n",
                       Revision);
@@ -445,7 +446,7 @@ AcpiDmDumpIort (
             }
             break;
 
-	default:
+        default:
 
             break;
         }
@@ -874,6 +875,7 @@ AcpiDmDumpMadt (
     UINT32                  Length = Table->Length;
     UINT32                  Offset = sizeof (ACPI_TABLE_MADT);
     ACPI_DMTABLE_INFO       *InfoTable;
+    UINT8                   Revision;
 
 
     /* Main table */
@@ -884,9 +886,13 @@ AcpiDmDumpMadt (
         return;
     }
 
+    Revision = Table->Revision;
+
     /* Subtables */
 
     Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
+    DbgPrint (ASL_PARSE_OUTPUT, "//0B) Offset %X, from table start: 0x%8.8X%8.8X\n",
+        Offset, ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)));
     while (Offset < Table->Length)
     {
         /* Common subtable header */
@@ -899,6 +905,7 @@ AcpiDmDumpMadt (
             return;
         }
 
+        DbgPrint (ASL_PARSE_OUTPUT, "subtableType: %X\n", Subtable->Type);
         switch (Subtable->Type)
         {
         case ACPI_MADT_TYPE_LOCAL_APIC:
@@ -958,7 +965,12 @@ AcpiDmDumpMadt (
 
         case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
 
-            InfoTable = AcpiDmTableInfoMadt11;
+	    if (Revision > 6)
+                    InfoTable = AcpiDmTableInfoMadt11b;
+	    else if (Revision == 6)
+                    InfoTable = AcpiDmTableInfoMadt11a;
+	    else
+                    InfoTable = AcpiDmTableInfoMadt11;
             break;
 
         case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
@@ -973,12 +985,14 @@ AcpiDmDumpMadt (
 
         case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR:
 
-            InfoTable = AcpiDmTableInfoMadt14;
+            InfoTable = Revision > 6 ? AcpiDmTableInfoMadt14a :
+				AcpiDmTableInfoMadt14;
             break;
 
         case ACPI_MADT_TYPE_GENERIC_TRANSLATOR:
 
-            InfoTable = AcpiDmTableInfoMadt15;
+            InfoTable = Revision > 6 ? AcpiDmTableInfoMadt15a :
+				AcpiDmTableInfoMadt15;
             break;
 
         case ACPI_MADT_TYPE_MULTIPROC_WAKEUP:
@@ -986,10 +1000,80 @@ AcpiDmDumpMadt (
             InfoTable = AcpiDmTableInfoMadt16;
             break;
 
+        case ACPI_MADT_TYPE_CORE_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt17;
+            break;
+
+        case ACPI_MADT_TYPE_LIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt18;
+            break;
+
+        case ACPI_MADT_TYPE_HT_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt19;
+            break;
+
+        case ACPI_MADT_TYPE_EIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt20;
+            break;
+
+        case ACPI_MADT_TYPE_MSI_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt21;
+            break;
+
+        case ACPI_MADT_TYPE_BIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt22;
+            break;
+
+        case ACPI_MADT_TYPE_LPC_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt23;
+            break;
+
+        case ACPI_MADT_TYPE_RINTC:
+
+            InfoTable = AcpiDmTableInfoMadt24;
+            break;
+
+        case ACPI_MADT_TYPE_IMSIC:
+
+            InfoTable = AcpiDmTableInfoMadt25;
+            break;
+
+        case ACPI_MADT_TYPE_APLIC:
+
+            InfoTable = AcpiDmTableInfoMadt26;
+            break;
+
+        case ACPI_MADT_TYPE_PLIC:
+
+            InfoTable = AcpiDmTableInfoMadt27;
+            break;
+
         default:
 
-            AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n",
-                Subtable->Type);
+            if ((Subtable->Type >= ACPI_MADT_TYPE_RESERVED) &&
+                (Subtable->Type < ACPI_MADT_TYPE_OEM_RESERVED))
+            {
+                AcpiOsPrintf ("\n**** Unknown MADT subtable type 0x%X\n\n",
+                    Subtable->Type);
+                goto NextSubtable;
+            }
+            else if (Subtable->Type >= ACPI_MADT_TYPE_OEM_RESERVED)
+            {
+                DbgPrint (ASL_PARSE_OUTPUT, "//[Found an OEM structure, type = %0x]\n",
+                    Subtable->Type);
+                Offset += sizeof (ACPI_SUBTABLE_HEADER);
+                DbgPrint (ASL_PARSE_OUTPUT, "//[0) Subtable->Length = %X, Subtable = %p, Offset = %X]\n",
+                    Subtable->Length, Subtable, Offset);
+                DbgPrint (ASL_PARSE_OUTPUT, "//[0A) Offset from table start: 0x%8.8X%8.8X]\n",
+                    ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)));
+            }
 
             /* Attempt to continue */
 
@@ -999,9 +1083,24 @@ AcpiDmDumpMadt (
                 return;
             }
 
+            /* Dump the OEM data */
+
+            Status = AcpiDmDumpTable (Length, Offset, ACPI_CAST_PTR (UINT8, Table) + Offset,
+                Subtable->Length - sizeof (ACPI_SUBTABLE_HEADER), AcpiDmTableInfoMadt128);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            DbgPrint (ASL_PARSE_OUTPUT, "//[1) Subtable->Length = %X, Offset = %X]\n",
+                Subtable->Length, Offset);
+            Offset -= sizeof (ACPI_SUBTABLE_HEADER);
+
             goto NextSubtable;
         }
 
+        DbgPrint (ASL_PARSE_OUTPUT, "//[2) Subtable->Length = %X, Offset = %X]\n",
+            Subtable->Length, Offset);
         Status = AcpiDmDumpTable (Length, Offset, Subtable,
             Subtable->Length, InfoTable);
         if (ACPI_FAILURE (Status))
@@ -1012,9 +1111,28 @@ AcpiDmDumpMadt (
 NextSubtable:
         /* Point to next subtable */
 
-        Offset += Subtable->Length;
+        DbgPrint (ASL_PARSE_OUTPUT, "//[3) Subtable->Length = %X, Offset = %X]\n",
+            Subtable->Length, Offset);
+        DbgPrint (ASL_PARSE_OUTPUT, "//[4) Offset from table start: 0x%8.8X%8.8X (%p) %p]\n",
+            ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (UINT8, Subtable) - ACPI_CAST_PTR (UINT8, Table)), Subtable, Table);
+        if (Offset > Table->Length)
+        {
+            return;
+        }
+
         Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
             Subtable->Length);
+
+        Offset = ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table);
+        if (Offset >= Table->Length)
+        {
+            return;
+        }
+
+        DbgPrint (ASL_PARSE_OUTPUT, "//[5) Next Subtable %p, length %X]\n",
+            Subtable, Subtable->Length);
+        DbgPrint (ASL_PARSE_OUTPUT, "//[5B) Offset from table start: 0x%8.8X%8.8X (%p)]\n",
+            ACPI_FORMAT_UINT64 (ACPI_CAST_PTR (char, Subtable) - ACPI_CAST_PTR (char, Table)), Subtable);
     }
 }
 
@@ -1076,6 +1194,137 @@ AcpiDmDumpMcfg (
     }
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpMpam
+ *
+ * PARAMETERS:  Table               - A MPAM table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a MPAM table
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpMpam (
+    ACPI_TABLE_HEADER          *Table)
+{
+    ACPI_STATUS                Status;
+    ACPI_MPAM_MSC_NODE         *MpamMscNode;
+    ACPI_MPAM_RESOURCE_NODE    *MpamResourceNode;
+    ACPI_MPAM_FUNC_DEPS	       *MpamFunctionalDependency;
+    ACPI_DMTABLE_INFO          *InfoTable;
+    UINT32                     Offset = sizeof(ACPI_TABLE_HEADER);
+    UINT32		       TempOffset;
+    UINT32                     MpamResourceNodeLength = 0;
+
+    while (Offset < Table->Length)
+    {
+        MpamMscNode = ACPI_ADD_PTR (ACPI_MPAM_MSC_NODE, Table, Offset);
+
+        /* Subtable: MSC */
+        Status = AcpiDmDumpTable (Table->Length, Offset, MpamMscNode,
+            MpamMscNode->Length, AcpiDmTableInfoMpam0);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Offset the start of the array of resources */
+        Offset += sizeof(ACPI_MPAM_MSC_NODE);
+
+        /* Subtable: MSC RIS(es) */
+        for (UINT32 ResourceIdx = 0; ResourceIdx < MpamMscNode->NumResourceNodes; ResourceIdx++)
+        {
+	    AcpiOsPrintf ("\n");
+            MpamResourceNode = ACPI_ADD_PTR (ACPI_MPAM_RESOURCE_NODE, Table, Offset);
+
+            MpamResourceNodeLength = sizeof(ACPI_MPAM_RESOURCE_NODE) +
+                MpamResourceNode->NumFunctionalDeps * sizeof(ACPI_MPAM_FUNC_DEPS);
+	    TempOffset = Offset;
+            Offset += MpamResourceNodeLength;
+
+            /* Subtable: MSC RIS */
+	    Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamResourceNode,
+		sizeof(ACPI_MPAM_RESOURCE_NODE), AcpiDmTableInfoMpam1);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            switch (MpamResourceNode->LocatorType)
+            {
+                case ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE:
+                    InfoTable = AcpiDmTableInfoMpam1A;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_MEMORY:
+                    InfoTable = AcpiDmTableInfoMpam1B;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_SMMU:
+                    InfoTable = AcpiDmTableInfoMpam1C;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE:
+                    InfoTable = AcpiDmTableInfoMpam1D;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE:
+                    InfoTable = AcpiDmTableInfoMpam1E;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_INTERCONNECT:
+                    InfoTable = AcpiDmTableInfoMpam1F;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_UNKNOWN:
+                    InfoTable = AcpiDmTableInfoMpam1G;
+                default:
+                    AcpiOsPrintf ("\n**** Unknown MPAM locator type 0x%X\n",
+                        MpamResourceNode->LocatorType);
+                    return;
+            }
+
+            /* Subtable: MSC Resource Locator(s) */
+	    TempOffset += ACPI_OFFSET(ACPI_MPAM_RESOURCE_NODE, Locator);
+	    Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->Locator,
+		sizeof(ACPI_MPAM_RESOURCE_LOCATOR), InfoTable);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+            /* Get the number of functional dependencies of an RIS */
+	    TempOffset += sizeof(ACPI_MPAM_RESOURCE_LOCATOR);
+            Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->NumFunctionalDeps,
+		sizeof(UINT32), AcpiDmTableInfoMpam1Deps);
+            if (ACPI_FAILURE (Status))
+            {
+                return;
+            }
+
+	    TempOffset += sizeof(UINT32);
+	    MpamFunctionalDependency = ACPI_ADD_PTR (ACPI_MPAM_FUNC_DEPS, MpamResourceNode,
+		sizeof(ACPI_MPAM_RESOURCE_NODE));
+            /* Subtable: MSC functional dependencies */
+            for (UINT32 funcDep = 0; funcDep < MpamResourceNode->NumFunctionalDeps; funcDep++)
+            {
+		AcpiOsPrintf ("\n");
+                Status = AcpiDmDumpTable (sizeof(ACPI_MPAM_FUNC_DEPS), 0,
+                    &MpamResourceNode->NumFunctionalDeps, 0, AcpiDmTableInfoMpam2);
+		Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamFunctionalDependency,
+		    sizeof(ACPI_MPAM_FUNC_DEPS), AcpiDmTableInfoMpam2);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+		TempOffset += sizeof(ACPI_MPAM_FUNC_DEPS);
+		MpamFunctionalDependency++;
+            }
+
+            AcpiOsPrintf ("\n\n");
+        }
+
+    }
+
+    return;
+}
 
 /*******************************************************************************
  *
@@ -1222,6 +1471,54 @@ AcpiDmDumpMpst (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpMrrm
+ *
+ * PARAMETERS:  Table               - A MRRM table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a MRRM
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpMrrm (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS                      Status;
+    ACPI_MRRM_MEM_RANGE_ENTRY        *Subtable;
+    UINT16                           Offset = sizeof (ACPI_TABLE_MRRM);
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMrrm);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables (all are same type) */
+
+    Subtable = ACPI_ADD_PTR (ACPI_MRRM_MEM_RANGE_ENTRY, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Header.Length, AcpiDmTableInfoMrrm0);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        Offset += Subtable->Header.Length;
+        Subtable = ACPI_ADD_PTR (ACPI_MRRM_MEM_RANGE_ENTRY, Subtable,
+           Subtable->Header.Length);
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmDumpMsct
@@ -1367,7 +1664,7 @@ AcpiDmDumpNfit (
             /* Has a variable number of 64-bit addresses at the end */
 
             InfoTable = AcpiDmTableInfoNfit6;
-            FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS) - sizeof (UINT64);
+            FieldOffset = sizeof (ACPI_NFIT_FLUSH_ADDRESS);
             break;
 
         case ACPI_NFIT_TYPE_CAPABILITIES:    /* ACPI 6.0A */
@@ -1421,12 +1718,12 @@ AcpiDmDumpNfit (
         case ACPI_NFIT_TYPE_SMBIOS:
 
             Length = Subtable->Length -
-                sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
+                sizeof (ACPI_NFIT_SMBIOS);
 
             if (Length)
             {
                 Status = AcpiDmDumpTable (Table->Length,
-                    sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
+                    sizeof (ACPI_NFIT_SMBIOS),
                     SmbiosInfo,
                     Length, AcpiDmTableInfoNfit3a);
                 if (ACPI_FAILURE (Status))
@@ -1469,515 +1766,106 @@ AcpiDmDumpNfit (
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiDmDumpNhlt
+ * FUNCTION:    AcpiDmDumpPcct
  *
- * PARAMETERS:  Table               - A NHLT table
+ * PARAMETERS:  Table               - A PCCT table
  *
  * RETURN:      None
  *
- * DESCRIPTION: Format the contents of an NHLT.
+ * DESCRIPTION: Format the contents of a PCCT. This table type consists
+ *              of an open-ended number of subtables.
  *
  ******************************************************************************/
 
 void
-AcpiDmDumpNhlt (
+AcpiDmDumpPcct (
     ACPI_TABLE_HEADER       *Table)
 {
     ACPI_STATUS             Status;
-    UINT32                  Offset;
-    UINT32                  TableLength = Table->Length;
-    UINT32                  EndpointCount;
-    UINT8                   FormatsCount;
-    ACPI_NHLT_ENDPOINT      *Subtable;
-    ACPI_NHLT_FORMAT_CONFIG *FormatSubtable;
-    ACPI_TABLE_NHLT         *InfoTable;
-    UINT32                  CapabilitiesSize;
-    UINT32                  i;
-    UINT32                  j;
-    UINT32                  EndpointEndOffset;
-    UINT8                   ConfigType = 0;
-    UINT8                   ArrayType;
-    UINT8                   MicrophoneCount;
-    ACPI_NHLT_VENDOR_MIC_COUNT          *MicCount;
-    ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A  *DevSpecific;
-    ACPI_NHLT_FORMATS_CONFIG            *FormatsConfig;
-    ACPI_NHLT_LINUX_SPECIFIC_COUNT      *Count;
-    ACPI_NHLT_LINUX_SPECIFIC_DATA       *LinuxData;
-    ACPI_NHLT_LINUX_SPECIFIC_DATA_B     *LinuxDataB;
+    ACPI_PCCT_SUBSPACE      *Subtable;
+    ACPI_DMTABLE_INFO       *InfoTable;
+    UINT32                  Length = Table->Length;
+    UINT32                  Offset = sizeof (ACPI_TABLE_PCCT);
 
 
     /* Main table */
 
-    AcpiOsPrintf ("    /* Main table */\n");
-
-    Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNhlt);
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
     if (ACPI_FAILURE (Status))
     {
         return;
     }
 
-    /* Get the Endpoint Descriptor Count */
-
-    InfoTable = ACPI_ADD_PTR (ACPI_TABLE_NHLT, Table, 0);
-    EndpointCount = InfoTable->EndpointCount;
-
     /* Subtables */
 
-    Offset = sizeof (ACPI_TABLE_NHLT);
-
-    while (Offset < TableLength)
+    Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
+    while (Offset < Table->Length)
     {
-        /* A variable number of Endpoint Descriptors - process each */
+        /* Common subtable header */
 
-        for (i = 0; i < EndpointCount; i++)
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            Subtable->Header.Length, AcpiDmTableInfoPcctHdr);
+        if (ACPI_FAILURE (Status))
         {
-            /* Do the Endpoint Descriptor table */
-
-            Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset);
-
-            /* Check for endpoint descriptor length beyond end-of-table */
-
-            if (Subtable->DescriptorLength > TableLength)
-            {
-                Offset += 1;
-                AcpiOsPrintf ("\n    /* Endpoint Descriptor Length larger than"
-                    " table size: %X, table %X, adjusting table offset (+1) */\n",
-                    Subtable->DescriptorLength, TableLength);
+            return;
+        }
 
-                Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset);
-            }
+        switch (Subtable->Header.Type)
+        {
+        case ACPI_PCCT_TYPE_GENERIC_SUBSPACE:
 
-            AcpiOsPrintf ("\n    /* Endpoint Descriptor #%u */\n", i+1);
-            Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
-                Subtable->DescriptorLength, AcpiDmTableInfoNhlt0);
-            if (ACPI_FAILURE (Status))
-            {
-                return;
-            }
+            InfoTable = AcpiDmTableInfoPcct0;
+            break;
 
-            EndpointEndOffset = Subtable->DescriptorLength + Offset;
+        case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE:
 
-            /* Check for endpoint descriptor beyond end-of-table */
+            InfoTable = AcpiDmTableInfoPcct1;
+            break;
 
-            if (Subtable->DescriptorLength > TableLength)
-            {
-                AcpiOsPrintf ("\n    /* Endpoint Descriptor Length larger than table size: %X, table %X */\n",
-                    Subtable->DescriptorLength, TableLength);
-            }
+        case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2:
 
-            Offset += sizeof (ACPI_NHLT_ENDPOINT);
-            Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset);
+            InfoTable = AcpiDmTableInfoPcct2;
+            break;
 
-            /* Do the Device Specific table */
+        case ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE:
 
-            AcpiOsPrintf ("\n    /* Endpoint Device_Specific_Config table */\n");
-            DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable);
-            CapabilitiesSize = DevSpecific->CapabilitiesSize;
-            Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b);
-            if (ACPI_FAILURE (Status))
-            {
-                return;
-            }
+            InfoTable = AcpiDmTableInfoPcct3;
+            break;
 
-            ArrayType = 0;
+        case ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE:
 
-            /* Different subtables based upon capabilities_size */
+            InfoTable = AcpiDmTableInfoPcct4;
+            break;
 
-            switch (CapabilitiesSize)
-            {
-            case 0:
-                Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B);
-                break;
+        case ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE:
 
-            case 1:
-                Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                    sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C), AcpiDmTableInfoNhlt5c);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-                Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C);
-                break;
+            InfoTable = AcpiDmTableInfoPcct5;
+            break;
 
-            case 2:
-                Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                    sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt5);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-                Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG);
-                break;
+        default:
 
-            case 3:
-            default:
-                /* Extract the ConfigType and ArrayType */
+            AcpiOsPrintf (
+                "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n",
+                Subtable->Header.Type);
+            return;
+        }
 
-                ConfigType = DevSpecific->ConfigType;
-                ArrayType = DevSpecific->ArrayType;
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            Subtable->Header.Length, InfoTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
 
-                Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                    sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A), AcpiDmTableInfoNhlt5a);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
+        /* Point to next subtable */
 
-                /* Capabilities Size == 3 */
-                Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A);
-                break;
-
-            case 7:
-                ConfigType = DevSpecific->ConfigType;
-                Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset);
-                DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable);
-
-                AcpiOsPrintf ("\n    /* Render Feedback Device-Specific table */\n");
-                Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                    sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt5);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-
-                /* Capabilities Size = 7 */
-                Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG);
-
-                if (ConfigType == ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK)
-                {
-                    Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset);
-                    DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable);
-
-                    Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                        sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt6b);
-                    if (ACPI_FAILURE (Status))
-                    {
-                        return;
-                    }
-                    Offset += sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG);
-                }
-                break;
-           }
-
-            /* Check for a vendor-defined mic array */
-
-            if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY)
-            {
-                if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED)
-                {
-                    /* Vendor-defined microphone array; get the microphone count first */
-
-                    AcpiOsPrintf ("\n    /* Vendor-defined microphone count */\n");
-                    MicCount = ACPI_ADD_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Table, Offset);
-                    MicrophoneCount = MicCount->MicrophoneCount;
-
-                    Status = AcpiDmDumpTable (TableLength, Offset, MicCount,
-                        sizeof (ACPI_NHLT_VENDOR_MIC_COUNT), AcpiDmTableInfoNhlt6a);
-                    Offset += sizeof (ACPI_NHLT_VENDOR_MIC_COUNT);
-                    if (ACPI_FAILURE (Status))
-                    {
-                        return;
-                    }
-
-                    /* Get the vendor microphone config structure(s) */
-
-                    for (j = 0; j < MicrophoneCount; j++)
-                    {
-                        AcpiOsPrintf ("\n    /* Vendor-defined microphone array #%u*/\n", j+1);
-                        DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset);
-
-                        Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                            sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG), AcpiDmTableInfoNhlt6);
-                        if (ACPI_FAILURE (Status))
-                        {
-                            return;
-                        }
-
-                        Offset += sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG);
-                    }
-
-                    /* Check for Microphone SNR and sensitivity extension */
-
-                    if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK) == ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT)
-                    {
-                        AcpiOsPrintf ("\n    /* Microphone SNR and sensitivity array */\n");
-                        DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset);
-
-                        Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific,
-                            sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION), AcpiDmTableInfoNhlt9);
-                        if (ACPI_FAILURE (Status))
-                        {
-                            return;
-                        }
-
-                        Offset += sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION);
-                    }
-                }
-            }
-
-            /* Do the Formats_Config table - starts with the FormatsCount field */
-
-            FormatsConfig = ACPI_ADD_PTR (ACPI_NHLT_FORMATS_CONFIG, Table, Offset);
-            FormatsCount = FormatsConfig->FormatsCount;
-
-            AcpiOsPrintf ("\n    /* Formats_Config table */\n");
-
-            /* Dump the FormatsCount value */
-
-            if (FormatsCount > 0)
-            {
-                Status = AcpiDmDumpTable (TableLength, Offset, FormatsConfig,
-                    sizeof (ACPI_NHLT_FORMATS_CONFIG), AcpiDmTableInfoNhlt4);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-            }
-            Offset += sizeof (ACPI_NHLT_FORMATS_CONFIG);
-
-            /* A variable number of Format_Config Descriptors - process each */
-
-            for (j = 0; j < FormatsCount; j++)
-            {
-                FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset);
-                CapabilitiesSize = FormatSubtable->CapabilitySize;
-
-                /* Do the Wave_extensible struct */
-
-                AcpiOsPrintf ("\n    /* Wave_Format_Extensible table #%u */\n", j+1);
-                Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable,
-                    sizeof (ACPI_NHLT_FORMAT_CONFIG), AcpiDmTableInfoNhlt3);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-
-                Offset += sizeof (ACPI_NHLT_FORMAT_CONFIG);
-
-                if (CapabilitiesSize > 0)
-                {
-                    FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset);
-                    /* Do the Capabilities array (of bytes) */
-
-                    AcpiOsPrintf ("\n    /* Specific_Config table #%u */\n", j+1);
-                    FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset);
-                    Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable,
-                        CapabilitiesSize, AcpiDmTableInfoNhlt3a);
-                    if (ACPI_FAILURE (Status))
-                    {
-                        return;
-                    }
-
-                    Offset += CapabilitiesSize; // + sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B);
-                }
-
-            } /* for (j = 0; j < FormatsCount; j++) */
-
-            /*
-             * If we are not done with the current Endpoint yet, then there must be
-             * some Linux-specific structure(s) yet to be processed. First, get
-             * the count of such structure(s).
-             */
-            if (Offset < EndpointEndOffset)
-            {
-                AcpiOsPrintf ("\n    /* Linux-specific structures (not part of NHLT spec) */\n");
-                Count = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_COUNT, Table, Offset);
-                Status = AcpiDmDumpTable (TableLength, Offset, Count,
-                    sizeof (ACPI_NHLT_LINUX_SPECIFIC_COUNT), AcpiDmTableInfoNhlt7);
-                if (ACPI_FAILURE (Status))
-                {
-                    return;
-                }
-                Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_COUNT);
-
-                if (Count->StructureCount > 1)
-                {
-                    /*
-                     * We currently cannot disassemble more than one
-                     * Linux-Specific section, because we have no way of
-                     * knowing whether the "Specific Data" part is present.
-                     */
-                    Count->StructureCount = 1;
-                    fprintf (stderr, "%s %s\n", "Feature not supported:",
-                        "Cannot disassemble more than one Linux-Specific structure");
-                    return;
-                }
-
-                /* Variable number of linux-specific structures */
-
-                for (j = 0; j < Count->StructureCount; j++)
-                {
-                    LinuxData = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA, Table, Offset);
-                    AcpiOsPrintf ("\n    /* Linux-specific structure #%u (not part of NHLT spec) */\n", j+1);
-
-                    /*
-                     * Dump the following Linux-specific fields:
-                     *  1) Device ID
-                     *  2) Device Instance ID
-                     *  3) Device Port ID
-                     */
-                    Status = AcpiDmDumpTable (TableLength, Offset, LinuxData,
-                        sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA), AcpiDmTableInfoNhlt7a);
-                    if (ACPI_FAILURE (Status))
-                    {
-                        return;
-                    }
-
-                    Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA);
-
-                    /*
-                     * Check that the current offset is not beyond the end of
-                     * this endpoint descriptor. If it is not, we assume that
-                     * the "Specific Data" field is present and valid. Note:
-                     * This does not seem to be documented anywhere.
-                     */
-                    if (Offset < EndpointEndOffset)
-                    {
-                        /* Dump the linux-specific "Specific Data" field */
-
-                        LinuxDataB = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA_B, Table, Offset);
-                        Status = AcpiDmDumpTable (TableLength, Offset, LinuxDataB,
-                            sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA_B), AcpiDmTableInfoNhlt7b);
-                        if (ACPI_FAILURE (Status))
-                        {
-                            return;
-                        }
-
-                        Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA_B);
-                    }
-                }
-
-                /* Should be at the end of the Endpoint structure. */
-            }
-
-        } /* for (i = 0; i < EndpointCount; i++) */
-
-
-        /*
-         * Done with all of the Endpoint Descriptors, Emit the table terminator
-         * (if such a legacy structure is present -- not in NHLT specification)
-         */
-        if (Offset == TableLength - sizeof (ACPI_NHLT_TABLE_TERMINATOR))
-        {
-            LinuxData = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA, Table, Offset);
-            AcpiOsPrintf ("\n    /* Table terminator structure (not part of NHLT spec) */\n");
-
-            Status = AcpiDmDumpTable (TableLength, Offset, LinuxData,
-                sizeof (ACPI_NHLT_TABLE_TERMINATOR), AcpiDmTableInfoNhlt8);
-            if (ACPI_FAILURE (Status))
-            {
-                return;
-            }
-        }
-
-        return;
-    }
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION:    AcpiDmDumpPcct
- *
- * PARAMETERS:  Table               - A PCCT table
- *
- * RETURN:      None
- *
- * DESCRIPTION: Format the contents of a PCCT. This table type consists
- *              of an open-ended number of subtables.
- *
- ******************************************************************************/
-
-void
-AcpiDmDumpPcct (
-    ACPI_TABLE_HEADER       *Table)
-{
-    ACPI_STATUS             Status;
-    ACPI_PCCT_SUBSPACE      *Subtable;
-    ACPI_DMTABLE_INFO       *InfoTable;
-    UINT32                  Length = Table->Length;
-    UINT32                  Offset = sizeof (ACPI_TABLE_PCCT);
-
-
-    /* Main table */
-
-    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
-    if (ACPI_FAILURE (Status))
-    {
-        return;
-    }
-
-    /* Subtables */
-
-    Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
-    while (Offset < Table->Length)
-    {
-        /* Common subtable header */
-
-        AcpiOsPrintf ("\n");
-        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-            Subtable->Header.Length, AcpiDmTableInfoPcctHdr);
-        if (ACPI_FAILURE (Status))
-        {
-            return;
-        }
-
-        switch (Subtable->Header.Type)
-        {
-        case ACPI_PCCT_TYPE_GENERIC_SUBSPACE:
-
-            InfoTable = AcpiDmTableInfoPcct0;
-            break;
-
-        case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE:
-
-            InfoTable = AcpiDmTableInfoPcct1;
-            break;
-
-        case ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2:
-
-            InfoTable = AcpiDmTableInfoPcct2;
-            break;
-
-        case ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE:
-
-            InfoTable = AcpiDmTableInfoPcct3;
-            break;
-
-        case ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE:
-
-            InfoTable = AcpiDmTableInfoPcct4;
-            break;
-
-        case ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE:
-
-            InfoTable = AcpiDmTableInfoPcct5;
-            break;
-
-        default:
-
-            AcpiOsPrintf (
-                "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n",
-                Subtable->Header.Type);
-            return;
-        }
-
-        AcpiOsPrintf ("\n");
-        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-            Subtable->Header.Length, InfoTable);
-        if (ACPI_FAILURE (Status))
-        {
-            return;
-        }
-
-        /* Point to next subtable */
-
-        Offset += Subtable->Header.Length;
-        Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Subtable,
-            Subtable->Header.Length);
-    }
-}
+        Offset += Subtable->Header.Length;
+        Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Subtable,
+            Subtable->Header.Length);
+    }
+}
 
 
 /*******************************************************************************
@@ -2054,12 +1942,15 @@ AcpiDmDumpPhat (
     ACPI_DMTABLE_INFO       *InfoTable;
     ACPI_PHAT_HEADER        *Subtable;
     ACPI_PHAT_VERSION_DATA  *VersionData;
+    ACPI_PHAT_HEALTH_DATA   *HealthData;
     UINT32                  RecordCount;
     UINT32                  Length = Table->Length;
     UINT32                  Offset = sizeof (ACPI_TABLE_PHAT);
+    UINT32                  OriginalOffset;
     UINT32                  SubtableLength;
     UINT32                  PathLength;
     UINT32                  VendorLength;
+    UINT16                  RecordType;
 
 
     Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, sizeof (ACPI_TABLE_PHAT));
@@ -2069,13 +1960,16 @@ AcpiDmDumpPhat (
         /* Common subtable header */
 
         AcpiOsPrintf ("\n");
-        Status = AcpiDmDumpTable (Length, 0, Subtable,
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
             sizeof (ACPI_PHAT_HEADER), AcpiDmTableInfoPhatHdr);
         if (ACPI_FAILURE (Status))
         {
             return;
         }
 
+        DbgPrint (ASL_DEBUG_OUTPUT, "\n/* %u, Subtable->Type %X */\n",
+            __LINE__, Subtable->Type);
+
         switch (Subtable->Type)
         {
         case ACPI_PHAT_TYPE_FW_VERSION_DATA:
@@ -2092,35 +1986,69 @@ AcpiDmDumpPhat (
 
         default:
 
-            AcpiOsPrintf ("\n**** Unknown PHAT subtable type 0x%X\n\n",
+            DbgPrint (ASL_DEBUG_OUTPUT, "\n**** Unknown PHAT subtable type 0x%X\n\n",
                 Subtable->Type);
 
             return;
         }
 
-        Status = AcpiDmDumpTable (Length, 0, Subtable,
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
             SubtableLength, InfoTable);
         if (ACPI_FAILURE (Status))
         {
             return;
         }
 
+        Offset += SubtableLength;
+
+        OriginalOffset = Offset;
         switch (Subtable->Type)
         {
         case ACPI_PHAT_TYPE_FW_VERSION_DATA:
 
             VersionData = ACPI_CAST_PTR (ACPI_PHAT_VERSION_DATA, Subtable);
             RecordCount = VersionData->ElementCount;
-            while (RecordCount)
+            RecordType = *ACPI_CAST_PTR (UINT8, Subtable);
+
+            /*
+             * Skip past a zero-valued block (not part of the ACPI PHAT specification).
+             * First, check for a zero length record and a zero element count
+             */
+            if (!VersionData->Header.Length && !VersionData->ElementCount)
             {
-                Status = AcpiDmDumpTable (Length, Offset,
-                    ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_VERSION_DATA)),
+                while (RecordType == 0)
+                {
+                    Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, Offset);
+                    RecordType = *ACPI_CAST_PTR (UINT8, Subtable);
+                    RecordCount = VersionData->ElementCount;
+                    Offset += 1;
+                }
+
+                Offset -= 1;
+                AcpiOsPrintf ("\n/* Warning: Block of zeros found above starting at Offset %X Length %X */\n"
+                    "/* (not compliant to PHAT specification -- ignoring block) */\n",
+                    OriginalOffset - 12, Offset - OriginalOffset + 12);
+            }
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, RecordCount: %X, Offset %X, SubtableLength %X */\n",
+                __LINE__, RecordCount, Offset, SubtableLength);
+
+            /* Emit each of the version elements */
+
+            while (RecordCount && VersionData->Header.Length)
+            {
+                AcpiOsPrintf ("\n/* Version Element #%Xh Offset %Xh */\n\n",
+                    VersionData->ElementCount - RecordCount + 1, Offset);
+
+                Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, Offset);
+                Status = AcpiDmDumpTable (Length, Offset, Subtable,
                     sizeof (ACPI_PHAT_VERSION_ELEMENT), AcpiDmTableInfoPhat0a);
                 if (ACPI_FAILURE (Status))
                 {
                     return;
                 }
 
+                Offset += sizeof (ACPI_PHAT_VERSION_ELEMENT);
                 RecordCount--;
             }
 
@@ -2128,28 +2056,64 @@ AcpiDmDumpPhat (
 
         case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
 
-            /* account for the null terminator */
+            HealthData = ACPI_CAST_PTR (ACPI_PHAT_HEALTH_DATA, Subtable);
+            PathLength = Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA);
+            VendorLength = 0;
 
-            PathLength = strlen (ACPI_ADD_PTR (char, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA))) + 1;
-            Status = AcpiDmDumpTable (Length, Offset,
-                ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
-                PathLength, AcpiDmTableInfoPhat1a);
-            if (ACPI_FAILURE (Status))
+            /* An offset of 0 should be ignored */
+            if (HealthData->DeviceSpecificOffset != 0)
             {
-                return;
+                if (HealthData->DeviceSpecificOffset > Subtable->Length)
+                {
+                    AcpiOsPrintf ("\n/* Warning: Oversized device-specific data offset %X */\n"
+                        "/* (maximum is %X -- ignoring device-specific data) */\n",
+                        HealthData->DeviceSpecificOffset, Subtable->Length);
+                }
+                else if (HealthData->DeviceSpecificOffset < sizeof (ACPI_PHAT_HEALTH_DATA))
+                {
+                    AcpiOsPrintf ("\n/* Warning: Undersized device-specific data offset %X */\n"
+                        "/* (minimum is %X -- ignoring device-specific data) */\n",
+                        HealthData->DeviceSpecificOffset, (UINT8) sizeof (ACPI_PHAT_HEALTH_DATA));
+                }
+                else
+                {
+                    PathLength = HealthData->DeviceSpecificOffset - sizeof (ACPI_PHAT_HEALTH_DATA);
+                    VendorLength = Subtable->Length - HealthData->DeviceSpecificOffset;
+                }
             }
 
-            /* Get vendor data - data length is the remaining subtable length */
+            DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, PathLength %X, Offset %X */\n",
+                __LINE__, PathLength, Offset);
 
-            VendorLength =
-                Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
-            Status = AcpiDmDumpTable (Length, 0,
-                ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength),
-                VendorLength, AcpiDmTableInfoPhat1b);
-            if (ACPI_FAILURE (Status))
+            if (PathLength)
             {
-                return;
+                Status = AcpiDmDumpTable (Length, Offset,
+                    ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
+                    PathLength, AcpiDmTableInfoPhat1a);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                Offset += PathLength;
             }
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, VendorLength %X, Offset %X */\n",
+                __LINE__, VendorLength, Offset);
+
+            if (VendorLength)
+            {
+                Status = AcpiDmDumpTable (Length, Offset,
+                    ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, HealthData->DeviceSpecificOffset),
+                    VendorLength, AcpiDmTableInfoPhat1b);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                Offset += VendorLength;
+            }
+
             break;
 
         default:
@@ -2161,9 +2125,12 @@ AcpiDmDumpPhat (
 
         /* Next subtable */
 
-        Offset += Subtable->Length;
-        Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable,
-            Subtable->Length);
+        DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, Bottom of main loop: Offset %X, "
+            "Subtable->Length %X, Table->Length %X */\n",
+            __LINE__, Offset, Subtable->Length, Table->Length);
+
+        Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table,
+            Offset);
     }
 }
 
@@ -2474,6 +2441,60 @@ AcpiDmDumpPrmt (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpRas2
+ *
+ * PARAMETERS:  Table               - A RAS2 table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a Ras2. This is a variable-length
+ *              table that contains an open-ended number of the RAS2 PCC
+ *              descriptors at the end of the table.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpRas2 (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    ACPI_RAS2_PCC_DESC      *Subtable;
+    UINT32                  Length = Table->Length;
+    UINT32                  Offset = sizeof (ACPI_TABLE_RAS2);
+
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRas2);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables - RAS2 PCC descriptor list */
+
+    Subtable = ACPI_ADD_PTR (ACPI_RAS2_PCC_DESC, Table, Offset);
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            sizeof (ACPI_RAS2_PCC_DESC), AcpiDmTableInfoRas2PccDesc);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        /* Point to next subtable */
+
+        Offset += sizeof (ACPI_RAS2_PCC_DESC);
+        Subtable = ACPI_ADD_PTR (ACPI_RAS2_PCC_DESC, Subtable,
+            sizeof (ACPI_RAS2_PCC_DESC));
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmDumpRgrt
@@ -2514,6 +2535,270 @@ AcpiDmDumpRgrt (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpRhct
+ *
+ * PARAMETERS:  Table               - A RHCT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a RHCT.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpRhct (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_STATUS             Status;
+    ACPI_RHCT_NODE_HEADER   *Subtable;
+    ACPI_RHCT_HART_INFO     *RhctHartInfo;
+    ACPI_RHCT_ISA_STRING    *RhctIsaString;
+    ACPI_RHCT_CMO_NODE      *RhctCmoNode;
+    ACPI_RHCT_MMU_NODE      *RhctMmuNode;
+    UINT32                  Length = Table->Length;
+    UINT8                   SubtableOffset, IsaPadOffset;
+    UINT32                  Offset = sizeof (ACPI_TABLE_RHCT);
+    UINT32                  i;
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRhct);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables */
+
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+
+        /* Common subtable header */
+
+        Subtable = ACPI_ADD_PTR (ACPI_RHCT_NODE_HEADER, Table, Offset);
+        if (Subtable->Length < sizeof (ACPI_RHCT_NODE_HEADER))
+        {
+            AcpiOsPrintf ("Invalid subtable length\n");
+            return;
+        }
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoRhctNodeHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        Length = sizeof (ACPI_RHCT_NODE_HEADER);
+
+        if (Subtable->Length < Length)
+        {
+            AcpiOsPrintf ("Invalid subtable length\n");
+            return;
+        }
+        SubtableOffset = (UINT8) Length;
+
+        switch (Subtable->Type)
+        {
+        case ACPI_RHCT_NODE_TYPE_HART_INFO:
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset),
+                    sizeof (ACPI_RHCT_HART_INFO), AcpiDmTableInfoRhctHartInfo1);
+
+            RhctHartInfo = ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset);
+
+            if ((UINT16)(Subtable->Length - SubtableOffset) <
+                (UINT16)(RhctHartInfo->NumOffsets * 4))
+            {
+                AcpiOsPrintf ("Invalid number of offsets\n");
+                return;
+            }
+            SubtableOffset += sizeof (ACPI_RHCT_HART_INFO);
+            for (i = 0; i < RhctHartInfo->NumOffsets; i++)
+            {
+                Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    ACPI_ADD_PTR (UINT32, Subtable, SubtableOffset),
+                    4, AcpiDmTableInfoRhctHartInfo2);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                SubtableOffset += 4;
+            }
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_ISA_STRING:
+            RhctIsaString = ACPI_ADD_PTR (ACPI_RHCT_ISA_STRING, Subtable, SubtableOffset);
+            IsaPadOffset = (UINT8) (SubtableOffset + 2 + RhctIsaString->IsaLength);
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    RhctIsaString, RhctIsaString->IsaLength, AcpiDmTableInfoRhctIsa1);
+            if (Subtable->Length > IsaPadOffset)
+            {
+                Status = AcpiDmDumpTable (Table->Length, Offset + IsaPadOffset,
+                         ACPI_ADD_PTR (UINT8, Subtable, IsaPadOffset),
+                         (Subtable->Length - IsaPadOffset), AcpiDmTableInfoRhctIsaPad);
+            }
+
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_CMO:
+            RhctCmoNode = ACPI_ADD_PTR (ACPI_RHCT_CMO_NODE, Subtable, SubtableOffset);
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                                      RhctCmoNode, 4, AcpiDmTableInfoRhctCmo1);
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_MMU:
+            RhctMmuNode = ACPI_ADD_PTR (ACPI_RHCT_MMU_NODE, Subtable, SubtableOffset);
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                                      RhctMmuNode, 2, AcpiDmTableInfoRhctMmu1);
+            break;
+
+        default:
+            break;
+        }
+
+        /* Point to next subtable */
+
+        Offset += Subtable->Length;
+    }
+}
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDmDumpRimt
+ *
+ * PARAMETERS:  Table               - A RIMT table
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Format the contents of a RIMT.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpRimt (
+    ACPI_TABLE_HEADER       *Table)
+{
+    ACPI_RIMT_PLATFORM_DEVICE  *PlatNode;
+    ACPI_RIMT_PCIE_RC          *PcieNode;
+    ACPI_RIMT_NODE             *Subtable;
+    ACPI_STATUS                Status;
+    UINT32                     Length = Table->Length;
+    UINT16                     SubtableOffset;
+    UINT32                     NodeOffset;
+    UINT16                     i;
+    UINT32                     Offset = sizeof (ACPI_TABLE_RIMT);
+
+    /* Main table */
+
+    Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRimt);
+    if (ACPI_FAILURE (Status))
+    {
+        return;
+    }
+
+    /* Subtables */
+
+    while (Offset < Table->Length)
+    {
+        AcpiOsPrintf ("\n");
+
+        /* Common subtable header */
+
+        Subtable = ACPI_ADD_PTR (ACPI_RIMT_NODE, Table, Offset);
+        if (Subtable->Length < sizeof (ACPI_RIMT_NODE))
+        {
+            AcpiOsPrintf ("Invalid subtable length\n");
+            return;
+        }
+        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+            Subtable->Length, AcpiDmTableInfoRimtNodeHdr);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+
+        Length = sizeof (ACPI_RIMT_NODE);
+
+        if (Subtable->Length < Length)
+        {
+            AcpiOsPrintf ("Invalid subtable length\n");
+            return;
+        }
+        SubtableOffset = (UINT16) Length;
+
+        switch (Subtable->Type)
+        {
+        case ACPI_RIMT_NODE_TYPE_IOMMU:
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    ACPI_ADD_PTR (ACPI_RIMT_IOMMU, Subtable, SubtableOffset),
+                    sizeof (ACPI_RIMT_IOMMU), AcpiDmTableInfoRimtIommu);
+
+            break;
+
+        case ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX:
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    ACPI_ADD_PTR (ACPI_RIMT_PCIE_RC, Subtable, SubtableOffset),
+                    sizeof (ACPI_RIMT_PCIE_RC), AcpiDmTableInfoRimtPcieRc);
+
+            PcieNode = ACPI_ADD_PTR (ACPI_RIMT_PCIE_RC, Subtable, SubtableOffset);
+
+            /* Dump the ID mappings */
+            NodeOffset = PcieNode->IdMappingOffset;
+            for (i = 0; i < PcieNode->NumIdMappings; i++)
+            {
+                AcpiOsPrintf ("\n");
+                Length = sizeof (ACPI_RIMT_ID_MAPPING);
+                Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
+                    ACPI_ADD_PTR (ACPI_RIMT_ID_MAPPING, Subtable, NodeOffset),
+                    Length, AcpiDmTableInfoRimtIdMapping);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                NodeOffset += Length;
+            }
+            break;
+
+        case ACPI_RIMT_NODE_TYPE_PLAT_DEVICE:
+            Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+                    ACPI_ADD_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable, SubtableOffset),
+                    sizeof (ACPI_RIMT_PLATFORM_DEVICE), AcpiDmTableInfoRimtPlatDev);
+            PlatNode = ACPI_ADD_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable, SubtableOffset);
+
+            /* Dump the ID mappings */
+            NodeOffset = PlatNode->IdMappingOffset;
+            for (i = 0; i < PlatNode->NumIdMappings; i++)
+            {
+                AcpiOsPrintf ("\n");
+                Length = sizeof (ACPI_RIMT_ID_MAPPING);
+                Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
+                    ACPI_ADD_PTR (ACPI_RIMT_ID_MAPPING, Subtable, NodeOffset),
+                    Length, AcpiDmTableInfoRimtIdMapping);
+                if (ACPI_FAILURE (Status))
+                {
+                    return;
+                }
+
+                NodeOffset += Length;
+            }
+            break;
+
+        default:
+            break;
+        }
+
+        /* Point to next subtable */
+
+        Offset += Subtable->Length;
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmDumpS3pt
diff --git a/sys/contrib/dev/acpica/source/common/dmtbdump3.c b/sys/contrib/dev/acpica/source/common/dmtbdump3.c
index 63b6d2d5e2..503bad5ff2 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbdump3.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbdump3.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -177,7 +177,8 @@ AcpiDmDumpSlic (
     ACPI_TABLE_HEADER       *Table)
 {
 
-    (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
+    (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER),
+        (void *) ((UINT8 *)Table + sizeof (*Table)),
         Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
 }
 
@@ -343,6 +344,11 @@ AcpiDmDumpSrat (
             InfoTable = AcpiDmTableInfoSrat6;
             break;
 
+        case ACPI_SRAT_TYPE_RINTC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat7;
+            break;
+
         default:
             AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
                 Subtable->Type);
diff --git a/sys/contrib/dev/acpica/source/common/dmtbinfo.c b/sys/contrib/dev/acpica/source/common/dmtbinfo.c
index 7d812315af..262c03feef 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbinfo.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbinfo.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/common/dmtbinfo1.c b/sys/contrib/dev/acpica/source/common/dmtbinfo1.c
index b30cafa9f7..e0059026e4 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbinfo1.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbinfo1.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -287,6 +287,16 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAestVendorError[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 3: Vendor Defined V2 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestVendorV2Error[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_AEST3A_OFFSET (AcpiHid),                "ACPI HID", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST3A_OFFSET (AcpiUid),                "ACPI UID", 0},
+    {ACPI_DMT_BUF16,    ACPI_AEST3A_OFFSET (VendorSpecificData),     "Vendor Specific Data", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 /* 4: Gic Error */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoAestGicError[] =
@@ -296,6 +306,31 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAestGicError[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 5: PCIe Error */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestPCIeError[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_AEST5_OFFSET (IortNodeReference),      "Iort Node Reference", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 6: Proxy Error */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestProxyError[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_AEST6_OFFSET (NodeAddress),            "Proxy Node Address", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Common AEST structures for subtables */
+
+#define ACPI_DM_AEST_INTERFACE_COMMON(a) \
+    {ACPI_DMT_UINT32,   ACPI_AEST0D##a##_OFFSET (Common.ErrorNodeDevice),               "Arm Error Node Device", 0},\
+    {ACPI_DMT_UINT32,   ACPI_AEST0D##a##_OFFSET (Common.ProcessorAffinity),             "Processor Affinity", 0}, \
+    {ACPI_DMT_UINT64,   ACPI_AEST0D##a##_OFFSET (Common.ErrorGroupRegisterBase),        "Err-Group Register Addr", 0}, \
+    {ACPI_DMT_UINT64,   ACPI_AEST0D##a##_OFFSET (Common.FaultInjectRegisterBase),       "Err-Inject Register Addr", 0}, \
+    {ACPI_DMT_UINT64,   ACPI_AEST0D##a##_OFFSET (Common.InterruptConfigRegisterBase),   "IRQ-Config Register Addr", 0},
+
 /* AestXface: Node Interface Structure */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXface[] =
@@ -314,6 +349,60 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXface[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* AestXface: Node Interface Structure V2 Header */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXfaceHeader[] =
+{
+    {ACPI_DMT_AEST_XFACE, ACPI_AEST0DH_OFFSET (Type),                "Interface Type", 0},
+    {ACPI_DMT_UINT8,    ACPI_AEST0DH_OFFSET (GroupFormat),           "Group Format", 0},
+    {ACPI_DMT_UINT16,   ACPI_AEST0DH_OFFSET (Reserved[0]),           "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST0DH_OFFSET (Flags),                 "Flags (decoded below)", 0},
+    {ACPI_DMT_FLAG0,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Shared Interface", 0},
+    {ACPI_DMT_FLAG1,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Clear MISCx Registers", 0},
+    {ACPI_DMT_FLAG2,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Error Node Device Valid", 0},
+    {ACPI_DMT_FLAG3,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Affinity Type", 0},
+    {ACPI_DMT_FLAG4,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Error group Address Valid", 0},
+    {ACPI_DMT_FLAG5,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Fault Injection Address Valid", 0},
+    {ACPI_DMT_FLAG7,    ACPI_AEST0D_FLAG_OFFSET (Flags, 0),          "Interrupt Config Address valid", 0},
+    {ACPI_DMT_UINT64,   ACPI_AEST0DH_OFFSET (Address),               "Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST0DH_OFFSET (ErrorRecordIndex),      "Error Record Index", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST0DH_OFFSET (ErrorRecordCount),      "Error Record Count", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* AestXface: Node Interface Structure V2 4K Group Format */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXface4k[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_AEST0D4_OFFSET (ErrorRecordImplemented),"Error Record Implemented", 0},
+    {ACPI_DMT_UINT64,   ACPI_AEST0D4_OFFSET (ErrorStatusReporting),  "Error Status Reporting", 0},
+    {ACPI_DMT_UINT64,   ACPI_AEST0D4_OFFSET (AddressingMode),        "Addressing Mode", 0},
+    ACPI_DM_AEST_INTERFACE_COMMON(4)
+    ACPI_DMT_TERMINATOR
+};
+
+/* AestXface: Node Interface Structure V2 16K Group Format */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXface16k[] =
+{
+    {ACPI_DMT_BUF32,    ACPI_AEST0D16_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0},
+    {ACPI_DMT_BUF32,    ACPI_AEST0D16_OFFSET (ErrorStatusReporting[0]),  "Error Status Reporting", 0},
+    {ACPI_DMT_BUF32,    ACPI_AEST0D16_OFFSET (AddressingMode[0]),        "Addressing Mode", 0},
+    ACPI_DM_AEST_INTERFACE_COMMON(16)
+    ACPI_DMT_TERMINATOR
+};
+
+/* AestXface: Node Interface Structure V2 64K Group Format */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXface64k[] =
+{
+    {ACPI_DMT_BUF112,   ACPI_AEST0D64_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0},
+    {ACPI_DMT_BUF112,   ACPI_AEST0D64_OFFSET (ErrorStatusReporting[0]),  "Error Status Reporting", 0},
+    {ACPI_DMT_BUF112,   ACPI_AEST0D64_OFFSET (AddressingMode[0]),        "Addressing Mode", 0},
+    ACPI_DM_AEST_INTERFACE_COMMON(64)
+    ACPI_DMT_TERMINATOR
+};
+
 /* AestXrupt: Node Interrupt Structure */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXrupt[] =
@@ -329,6 +418,20 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXrupt[] =
 };
 
 
+/* AestXrupt: Node Interrupt Structure V2 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAestXruptV2[] =
+{
+    {ACPI_DMT_AEST_XRUPT, ACPI_AEST0EA_OFFSET (Type),                "Interrupt Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_AEST0EA_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_AEST0EA_OFFSET (Flags),                 "Flags (decoded below)", 0},
+    {ACPI_DMT_FLAG0,    ACPI_AEST0EA_FLAG_OFFSET (Flags, 0),         "Level Triggered", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST0EA_OFFSET (Gsiv),                  "Gsiv", 0},
+    {ACPI_DMT_UINT32,   ACPI_AEST0EA_OFFSET (Reserved1[0]),          "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * ASF - Alert Standard Format table (Signature "ASF!")
@@ -433,6 +536,57 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAsf4[] =
 };
 
 
+/*******************************************************************************
+ *
+ * ASPT - AMD Secure Processor table (Signature "ASPT")
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAspt[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ASPT_OFFSET(NumEntries),               "Number of Subtables", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Common Subtable header (one per Subtable) */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoAsptHdr[] =
+{
+    {ACPI_DMT_ASPT,     ACPI_ASPTH_OFFSET(Type),                    "Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_ASPTH_OFFSET(Length),                  "Length", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 0: ASPT Global Registers */
+ACPI_DMTABLE_INFO AcpiDmTableInfoAspt0[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ASPT0_OFFSET(Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT0_OFFSET(FeatureRegAddr),          "Feature Register Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT0_OFFSET(IrqEnRegAddr),            "Interrupt Enable Register Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT0_OFFSET(IrqStRegAddr),            "Interrupt Status Register Address", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1: ASPT SEV Mailbox Registers */
+ACPI_DMTABLE_INFO AcpiDmTableInfoAspt1[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_ASPT1_OFFSET(MboxIrqId),               "Mailbox Interrupt ID", 0},
+    {ACPI_DMT_UINT24,   ACPI_ASPT1_OFFSET(Reserved[0]),             "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT1_OFFSET(CmdRespRegAddr),          "CmdResp Register Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT1_OFFSET(CmdBufLoRegAddr),         "CmdBufAddr_Lo Register Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT1_OFFSET(CmdBufHiRegAddr),         "CmdBufAddr_Hi Register Address", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 2: ASPT ACPI Maiblox Registers */
+ACPI_DMTABLE_INFO AcpiDmTableInfoAspt2[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ASPT2_OFFSET(Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT2_OFFSET(CmdRespRegAddr),          "CmdResp Register Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT2_OFFSET(Reserved2[0]),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ASPT2_OFFSET(Reserved2[1]),           "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 /*******************************************************************************
  *
  * BDAT -  BIOS Data ACPI Table
@@ -494,6 +648,116 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoBoot[] =
     ACPI_DMT_TERMINATOR
 };
 
+/*******************************************************************************
+ *
+ * CDAT - Coherent Device Attribute Table
+ *
+ ******************************************************************************/
+
+ /* Table header (not ACPI-compliant) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdatTableHdr[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_CDAT_OFFSET (Length),              "CDAT Table Length", DT_LENGTH},
+    {ACPI_DMT_UINT8,    ACPI_CDAT_OFFSET (Revision),            "Revision", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT_OFFSET (Checksum),            "Checksum", 0},
+    {ACPI_DMT_UINT48,   ACPI_CDAT_OFFSET (Reserved),            "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_CDAT_OFFSET (Sequence),            "Sequence", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Common subtable header */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdatHeader[] =
+{
+    {ACPI_DMT_CDAT,     ACPI_CDATH_OFFSET (Type),               "Subtable Type", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDATH_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDATH_OFFSET (Length),             "Length", DT_LENGTH},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat0[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT0_OFFSET (DsmadHandle),        "DSMAD Handle", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT0_OFFSET (Flags),              "Flags", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT0_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT0_OFFSET (DpaBaseAddress),     "DPA Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT0_OFFSET (DpaLength),          "DPA Length", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat1[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT1_OFFSET (Handle),             "Handle", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT1_OFFSET (Flags),              "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT1_OFFSET (DataType),           "Data Type", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT1_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT1_OFFSET (EntryBaseUnit),      "Entry Base Unit", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT1_OFFSET (Entry[0]),           "Entry0", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT1_OFFSET (Entry[1]),           "Entry1", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT1_OFFSET (Entry[2]),           "Entry2", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT1_OFFSET (Reserved2),          "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat2[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT2_OFFSET (DsmasHandle),        "DSMAS Handle", 0},
+    {ACPI_DMT_UINT24,   ACPI_CDAT2_OFFSET (Reserved[3]),        "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT2_OFFSET (SideCacheSize),      "Side Cache Size", 0},
+    {ACPI_DMT_UINT32,   ACPI_CDAT2_OFFSET (CacheAttributes),    "Cache Attributes", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 3: Device Scoped Initiator Structure (DSIS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat3[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT3_OFFSET (Flags),              "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT3_OFFSET (Handle),             "Handle", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT3_OFFSET (Reserved),           "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat4[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT4_OFFSET (DsmasHandle),        "DSMAS Handle", 0},
+    {ACPI_DMT_UINT8,    ACPI_CDAT4_OFFSET (MemoryType),         "Memory Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDAT4_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT4_OFFSET (DpaOffset),          "DPA Offset", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT4_OFFSET (RangeLength),        "DPA Range Length", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdat5[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CDAT5_OFFSET (DataType),           "Data Type", 0},
+    {ACPI_DMT_UINT24,   ACPI_CDAT5_OFFSET (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CDAT5_OFFSET (EntryBaseUnit),      "Entry Base Unit", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* Switch Scoped Latency and Bandwidth Entry (SSLBE) (For subtable 5 above) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCdatEntries[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_CDATE_OFFSET (PortxId),            "Port X Id", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDATE_OFFSET (PortyId),            "Port Y Id", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDATE_OFFSET (LatencyOrBandwidth), "Latency or Bandwidth", 0},
+    {ACPI_DMT_UINT16,   ACPI_CDATE_OFFSET (Reserved),           "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 
 /*******************************************************************************
  *
@@ -521,6 +785,45 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoCedt0[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 1: CXL Fixed Memory Window Structure */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCedt1[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_CEDT1_OFFSET (Reserved1),            "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CEDT1_OFFSET (BaseHpa),              "Window base address", 0},
+    {ACPI_DMT_UINT64,   ACPI_CEDT1_OFFSET (WindowSize),           "Window size", 0},
+    {ACPI_DMT_UINT8,    ACPI_CEDT1_OFFSET (InterleaveWays),       "Interleave Members", 0},
+    {ACPI_DMT_UINT8,    ACPI_CEDT1_OFFSET (InterleaveArithmetic), "Interleave Arithmetic", 0},
+    {ACPI_DMT_UINT16,   ACPI_CEDT1_OFFSET (Reserved2),            "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_CEDT1_OFFSET (Granularity),          "Granularity", 0},
+    {ACPI_DMT_UINT16,   ACPI_CEDT1_OFFSET (Restrictions),         "Restrictions", 0},
+    {ACPI_DMT_UINT16,   ACPI_CEDT1_OFFSET (QtgId),                "QtgId", 0},
+    {ACPI_DMT_UINT32,   ACPI_CEDT1_OFFSET (InterleaveTargets),    "First Target", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCedt1_te[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_CEDT1_TE_OFFSET (InterleaveTarget),  "Next Target", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 2: CXL XOR Interleave Math Structure */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCedt2[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_CEDT2_OFFSET (Reserved1),            "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_CEDT2_OFFSET (Hbig),                 "Interleave Granularity", 0},
+    {ACPI_DMT_UINT8,    ACPI_CEDT2_OFFSET (NrXormaps),            "Xormap List Count", 0},
+    {ACPI_DMT_UINT64,   ACPI_CEDT2_OFFSET (XormapList),           "First Xormap", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCedt2_te[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_CEDT2_TE_OFFSET (Xormap),            "Next Xormap", 0},
+    ACPI_DMT_TERMINATOR
+};
 
 /*******************************************************************************
  *
@@ -708,7 +1011,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoDmarScope[] =
 {
     {ACPI_DMT_DMAR_SCOPE, ACPI_DMARS_OFFSET (EntryType),            "Device Scope Type", 0},
     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Length),                 "Entry Length", DT_LENGTH},
-    {ACPI_DMT_UINT16,   ACPI_DMARS_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Flags),                  "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Reserved),               "Reserved", 0},
     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (EnumerationId),          "Enumeration ID", 0},
     {ACPI_DMT_UINT8,    ACPI_DMARS_OFFSET (Bus),                    "PCI Bus Number", 0},
     ACPI_DMT_TERMINATOR
@@ -721,7 +1025,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoDmarScope[] =
 ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar0[] =
 {
     {ACPI_DMT_UINT8,    ACPI_DMAR0_OFFSET (Flags),                  "Flags", 0},
-    {ACPI_DMT_UINT8,    ACPI_DMAR0_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_DMAR0_OFFSET (Size),                   "Size (decoded below)", 0},
+    {ACPI_DMT_FLAGS4_0, ACPI_DMAR0_FLAG_OFFSET (Size,0),            "Size (pages, log2)", 0},
     {ACPI_DMT_UINT16,   ACPI_DMAR0_OFFSET (Segment),                "PCI Segment Number", 0},
     {ACPI_DMT_UINT64,   ACPI_DMAR0_OFFSET (Address),                "Register Base Address", 0},
     ACPI_DMT_TERMINATOR
@@ -768,6 +1073,25 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar4[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 5: SoC Integrated Address Translation Cache */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar5[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_DMAR5_OFFSET (Flags),                  "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_DMAR5_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_DMAR5_OFFSET (Segment),                "PCI Segment Number", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 6: SoC Integrated Device Property */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar6[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_DMAR6_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_DMAR6_OFFSET (Segment),                "PCI Segment Number", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 
 /*******************************************************************************
  *
@@ -876,6 +1200,276 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoEinj0[] =
 };
 
 
+/*******************************************************************************
+ *
+ * ERDT - Enhanced Resource Director Technology table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdt[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_OFFSET (MaxClos),                 "Maximum supported CLOSID", 0},
+    {ACPI_DMT_BUF24,    ACPI_ERDT_OFFSET (Reserved),                "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * ERDT - Common Subtable Header
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtHdr[] =
+{
+    {ACPI_DMT_ERDT,     ACPI_ERDT_HDR_OFFSET (Type),                "Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_HDR_OFFSET (Length),              "Length", DT_LENGTH},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - ERDT Resource Management Domain Description subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtRmdd[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_ERDT_RMDD_OFFSET      (Flags),              "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_ERDT_RMDD_FLAG_OFFSET (Flags,0),            "L3 Domain", 0},
+    {ACPI_DMT_FLAG1,    ACPI_ERDT_RMDD_FLAG_OFFSET (Flags,0),            "I/O L3 Domain", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_RMDD_OFFSET      (IO_l3_Slices),       "I/O L3 Slices", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_RMDD_OFFSET      (IO_l3_Sets),         "I/O L3 Sets", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_RMDD_OFFSET      (IO_l3_Ways),         "I/O L3 Ways", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_RMDD_OFFSET      (Reserved),           "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_RMDD_OFFSET      (DomainId),           "Domain ID", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_RMDD_OFFSET      (MaxRmid),            "Maximum supported RMID", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_RMDD_OFFSET      (CregBase),           "Control Register Base Address", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_RMDD_OFFSET      (CregSize),           "Control Register Base Size", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - CACD CPU Agent Collection Description subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCacd[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CACD_OFFSET (Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CACD_OFFSET (DomainId),                "Domain ID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCacdX2apic[] =
+{
+    {ACPI_DMT_UINT32,   0,                                               "X2ApicID", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - DACD Device Agent Collection Description subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtDacd[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_ERDT_DACD_OFFSET (Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_DACD_OFFSET (DomainId),                "Domain ID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtDacdScope[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_ERDT_DACD_PATH_OFFSET (Header.Type),        "PCIType", DT_OPTIONAL},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_DACD_PATH_OFFSET (Header.Length),      "Length", DT_OPTIONAL},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_DACD_PATH_OFFSET (Segment),            "Segment", DT_OPTIONAL},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_DACD_PATH_OFFSET (Reserved),           "Reserved", DT_OPTIONAL},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_DACD_PATH_OFFSET (StartBus),           "StartBus", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtDacdPath[] =
+{
+    {ACPI_DMT_UINT8,    0,                                               "Path", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Cache Monitoring Registers for CPU Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCmrc[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRC_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRC_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_CMRC_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_BUF11,    ACPI_ERDT_CMRC_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_CMRC_OFFSET (CmtRegBase),              "CMT Register Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRC_OFFSET (CmtRegSize),              "CMT Register Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CMRC_OFFSET (ClumpSize),               "Clump Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CMRC_OFFSET (ClumpStride),             "Clump Stride", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_CMRC_OFFSET (UpScale),                 "Upscale factor", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Memory-bandwidth Monitoring Registers for CPU agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtMmrc[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MMRC_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MMRC_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_MMRC_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_BUF11,    ACPI_ERDT_MMRC_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_MMRC_OFFSET (RegBase),                 "MBM Register Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MMRC_OFFSET (RegSize),                 "MBM Register Size", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_MMRC_OFFSET (CounterWidth),            "MBM Counter Width", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_MMRC_OFFSET (UpScale),                 "Upscale factor", 0},
+    {ACPI_DMT_UINT56,   ACPI_ERDT_MMRC_OFFSET (Reserved3),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MMRC_OFFSET (CorrFactorListLen),       "Corr Factor List Length", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtMmrcCorrFactor[] =
+{
+    {ACPI_DMT_UINT32,   0,                                               "CorrFactor", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Memory-bandwidth Allocation Registers for CPU agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtMarc[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_ERDT_MARC_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_MARC_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_MARC_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_UINT56,   ACPI_ERDT_MARC_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_MARC_OFFSET (RegBaseOpt),              "MBA Register Opt Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_MARC_OFFSET (RegBaseMin),              "MBA Register Min Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_MARC_OFFSET (RegBaseMax),              "MBA Register Max Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MARC_OFFSET (MbaRegSize),              "MBA Register Size", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_MARC_OFFSET (MbaCtrlRange),            "MBA Control Range", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Cache Allocation Registers for CPU Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCarc[] =
+{
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Cache Monitoring Registers for Device Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCmrd[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRD_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRD_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_CMRD_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_BUF11,    ACPI_ERDT_CMRD_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_CMRD_OFFSET (RegBase),                 "CMRD Register Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CMRD_OFFSET (RegSize),                 "CMRD Register Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CMRD_OFFSET (CmtRegOff),               "Register Offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CMRD_OFFSET (CmtClumpSize),            "Clump Size", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_CMRD_OFFSET (UpScale),                 "Upscale factor", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - O Bandwidth Monitoring Registers for Device Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtIbrd[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_IBRD_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_IBRD_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_IBRD_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_BUF11,    ACPI_ERDT_IBRD_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_IBRD_OFFSET (RegBase),                 "IBRD Register Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_IBRD_OFFSET (RegSize),                 "IBRD Register Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_IBRD_OFFSET (TotalBwOffset),           "TotalBw Offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_IBRD_OFFSET (IOMissBwOffset),          "IO Miss Offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_IBRD_OFFSET (TotalBwClump),            "TotalBw Clump", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_IBRD_OFFSET (IOMissBwClump),           "IO Miss Clump", 0},
+    {ACPI_DMT_UINT56,   ACPI_ERDT_IBRD_OFFSET (Reserved3),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_IBRD_OFFSET (CounterWidth),            "Counter Width", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_IBRD_OFFSET (UpScale),                 "Upscale factor", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_IBRD_OFFSET (CorrFactorListLen),       "Corr Factor List Length", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtIbrdCorrFactor[] =
+{
+    {ACPI_DMT_UINT32,   0,                                               "CorrFactor", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - O bandwidth Allocation Registers for Device Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtIbad[] =
+{
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RMDD - Cache Allocation Registers for Device Agents subtable
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoErdtCard[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CARD_OFFSET (Reserved1),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CARD_OFFSET (Flags),                   "Flags", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CARD_OFFSET (ContentionMask),          "ContentionMask", 0},
+    {ACPI_DMT_UINT8,    ACPI_ERDT_CARD_OFFSET (IndexFn),                 "Register Index Function", 0},
+    {ACPI_DMT_UINT56,   ACPI_ERDT_CARD_OFFSET (Reserved2),               "Register Index Function", 0},
+    {ACPI_DMT_UINT64,   ACPI_ERDT_CARD_OFFSET (RegBase),                 "CARD Register Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_ERDT_CARD_OFFSET (RegSize),                 "CARD Register Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CARD_OFFSET (CatRegOffset),            "CARD Register Offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_ERDT_CARD_OFFSET (CatRegBlockSize),         "CARD Register Block Size", 0},
+
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * ERST - Error Record Serialization table
@@ -1356,7 +1950,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat2[] =
     {ACPI_DMT_FLAGS4_8,     ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0},
     {ACPI_DMT_FLAGS4_12,    ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0},
     {ACPI_DMT_FLAGS16_16,   ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0},
-    {ACPI_DMT_UINT16,       ACPI_HMAT2_OFFSET (Reserved2),              "Reserved2", 0},
+    {ACPI_DMT_UINT16,       ACPI_HMAT2_OFFSET (AddressMode),            "Address Mode", 0},
     {ACPI_DMT_UINT16,       ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles),  "SMBIOS Handle #", 0},
     ACPI_DMT_TERMINATOR
 };
diff --git a/sys/contrib/dev/acpica/source/common/dmtbinfo2.c b/sys/contrib/dev/acpica/source/common/dmtbinfo2.c
index ab1b2634cf..570540e509 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbinfo2.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbinfo2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -208,6 +208,40 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoAgdi[] =
 };
 
 
+/*******************************************************************************
+ *
+ * APMT - ARM Performance Monitoring Unit Table
+ *
+ * Conforms to:
+ * ARM Performance Monitoring Unit Architecture 1.0 Platform Design Document
+ * ARM DEN0117 v1.0 November 25, 2021
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoApmtNode[] =
+{
+    {ACPI_DMT_UINT16,  ACPI_APMTN_OFFSET (Length),                  "Length of APMT Node", 0},
+    {ACPI_DMT_UINT8,   ACPI_APMTN_OFFSET (Flags),                   "Node Flags", 0},
+    {ACPI_DMT_FLAG0,   ACPI_APMTN_FLAG_OFFSET (Flags, 0),           "Dual Page Extension", 0},
+    {ACPI_DMT_FLAG1,   ACPI_APMTN_FLAG_OFFSET (Flags, 0),           "Processor Affinity Type", 0},
+    {ACPI_DMT_FLAG2,   ACPI_APMTN_FLAG_OFFSET (Flags, 0),           "64-bit Atomic Support", 0},
+    {ACPI_DMT_UINT8,   ACPI_APMTN_OFFSET (Type),                    "Node Type", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (Id),                      "Unique Node Identifier", 0},
+    {ACPI_DMT_UINT64,  ACPI_APMTN_OFFSET (InstPrimary),             "Primary Node Instance", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (InstSecondary),           "Secondary Node Instance", 0},
+    {ACPI_DMT_UINT64,  ACPI_APMTN_OFFSET (BaseAddress0),            "Page 0 Base Address", 0},
+    {ACPI_DMT_UINT64,  ACPI_APMTN_OFFSET (BaseAddress1),            "Page 1 Base Address", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (OvflwIrq),                "Overflow Interrupt ID", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (OvflwIrqFlags),           "Overflow Interrupt Flags", 0},
+    {ACPI_DMT_FLAG0,   ACPI_APMTN_FLAG_OFFSET (OvflwIrqFlags, 0),   "Interrupt Mode", 0},
+    {ACPI_DMT_FLAG1,   ACPI_APMTN_FLAG_OFFSET (OvflwIrqFlags, 0),   "Interrupt Type", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (ProcAffinity),            "Processor Affinity", 0},
+    {ACPI_DMT_UINT32,  ACPI_APMTN_OFFSET (ImplId),                  "Implementation ID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * IORT - IO Remapping Table
@@ -279,6 +313,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoIortAcc[] =
     {ACPI_DMT_UINT8,    ACPI_IORTA_OFFSET (MemoryFlags),            "Memory Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0),    "Coherency", 0},
     {ACPI_DMT_FLAG1,    ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0),    "Device Attribute", 0},
+    {ACPI_DMT_FLAG2,    ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0),    "Ensured Coherency of Accesses", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -323,7 +358,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoIort2[] =
     {ACPI_DMT_UINT32,   ACPI_IORT2_OFFSET (AtsAttribute),           "ATS Attribute", 0},
     {ACPI_DMT_UINT32,   ACPI_IORT2_OFFSET (PciSegmentNumber),       "PCI Segment Number", 0},
     {ACPI_DMT_UINT8,    ACPI_IORT2_OFFSET (MemoryAddressLimit),     "Memory Size Limit", 0},
-    {ACPI_DMT_UINT24,   ACPI_IORT2_OFFSET (Reserved[0]),            "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_IORT2_OFFSET (PasidCapabilities),      "PASID Capabilities", 0},
+    {ACPI_DMT_UINT8,    ACPI_IORT2_OFFSET (Reserved[0]),            "Reserved", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -377,6 +413,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoIort4[] =
     {ACPI_DMT_FLAG0,    ACPI_IORT4_FLAG_OFFSET (Flags, 0),          "COHACC Override", 0},
     {ACPI_DMT_FLAG1,    ACPI_IORT4_FLAG_OFFSET (Flags, 0),          "HTTU Override", 0},
     {ACPI_DMT_FLAG3,    ACPI_IORT4_FLAG_OFFSET (Flags, 0),          "Proximity Domain Valid", 0},
+    {ACPI_DMT_FLAG4,    ACPI_IORT4_FLAG_OFFSET (Flags, 0),          "DeviceID Valid", 0},
     {ACPI_DMT_UINT32,   ACPI_IORT4_OFFSET (Reserved),               "Reserved", 0},
     {ACPI_DMT_UINT64,   ACPI_IORT4_OFFSET (VatosAddress),           "VATOS Address", 0},
     {ACPI_DMT_UINT32,   ACPI_IORT4_OFFSET (Model),                  "Model", 0},
@@ -407,6 +444,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoIort6[] =
 {
     {ACPI_DMT_UINT32,   ACPI_IORT6_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_IORT6_FLAG_OFFSET (Flags, 0),          "Remapping Permitted", 0},
+    {ACPI_DMT_FLAG1,    ACPI_IORT6_FLAG_OFFSET (Flags, 0),          "Access Privileged", 0},
+    {ACPI_DMT_FLAGS8_2, ACPI_IORT6_FLAG_OFFSET (Flags, 0),          "Access Attributes", 0},
     {ACPI_DMT_UINT32,   ACPI_IORT6_OFFSET (RmrCount),               "Number of RMR Descriptors", 0},
     {ACPI_DMT_UINT32,   ACPI_IORT6_OFFSET (RmrOffset),              "RMR Descriptor Offset", 0},
     ACPI_DMT_TERMINATOR
@@ -640,8 +679,6 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoLpit0[] =
     {ACPI_DMT_UINT64,   ACPI_LPIT0_OFFSET (CounterFrequency),       "Counter Frequency", 0},
     ACPI_DMT_TERMINATOR
 };
-
-
 /*******************************************************************************
  *
  * MADT - Multiple APIC Description Table and subtables
@@ -826,6 +863,64 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
     {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
     {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
     {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (TrbeInterrupt),         "TRBE Interrupt", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 11: Generic Interrupt Controller (ACPI 5.0) - MADT revision 6 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11a[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (CpuInterfaceNumber),    "CPU Interface Number", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Uid),                   "Processor UID", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Processor Enabled", 0},
+    {ACPI_DMT_FLAG1,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Performance Interrupt Trigger Mode", 0},
+    {ACPI_DMT_FLAG2,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Virtual GIC Interrupt Trigger Mode", 0},
+    {ACPI_DMT_FLAG3,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Online Capable", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (ParkingVersion),        "Parking Protocol Version", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (PerformanceInterrupt),  "Performance Interrupt", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ParkedAddress),         "Parked Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (BaseAddress),           "Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicvBaseAddress),       "Virtual GIC Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GichBaseAddress),       "Hypervisor GIC Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (VgicInterrupt),         "Virtual GIC Interrupt", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (TrbeInterrupt),         "TRBE Interrupt", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 11: Generic Interrupt Controller (ACPI 5.0) - MADT revision 7 */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11b[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (CpuInterfaceNumber),    "CPU Interface Number", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Uid),                   "Processor UID", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Processor Enabled", 0},
+    {ACPI_DMT_FLAG1,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Performance Interrupt Trigger Mode", 0},
+    {ACPI_DMT_FLAG2,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Virtual GIC Interrupt Trigger Mode", 0},
+    {ACPI_DMT_FLAG3,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "Online Capable", 0},
+    {ACPI_DMT_FLAG4,    ACPI_MADT11_FLAG_OFFSET (Flags,0),          "GICR non-coherent", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (ParkingVersion),        "Parking Protocol Version", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (PerformanceInterrupt),  "Performance Interrupt", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ParkedAddress),         "Parked Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (BaseAddress),           "Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicvBaseAddress),       "Virtual GIC Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GichBaseAddress),       "Hypervisor GIC Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT11_OFFSET (VgicInterrupt),         "Virtual GIC Interrupt", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (TrbeInterrupt),         "TRBE Interrupt", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -866,6 +961,18 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt14[] =
    ACPI_DMT_TERMINATOR
 };
 
+/* 14: Generic Redistributor (ACPI 5.1) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt14a[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT14_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_MADT14_FLAG_OFFSET (Flags,0),          "GICR non-coherent", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT14_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT14_OFFSET (BaseAddress),           "Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT14_OFFSET (Length),                "Length", 0},
+   ACPI_DMT_TERMINATOR
+};
+
 /* 15: Generic Translator (ACPI 6.0) */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt15[] =
@@ -877,6 +984,17 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt15[] =
    ACPI_DMT_TERMINATOR
 };
 
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt15a[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT15_OFFSET (Flags),                 "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_MADT15_FLAG_OFFSET (Flags,0),          "GIC ITS non-coherent", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT15_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT15_OFFSET (TranslationId),         "Translation ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT15_OFFSET (BaseAddress),           "Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT15_OFFSET (Reserved2),             "Reserved", 0},
+   ACPI_DMT_TERMINATOR
+};
+
 /* 16: Multiprocessor wakeup structure (ACPI 6.4) */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt16[] =
@@ -887,6 +1005,155 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt16[] =
    ACPI_DMT_TERMINATOR
 };
 
+/* 17: core interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt17[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT17_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT17_OFFSET (ProcessorId),           "ProcessorId", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT17_OFFSET (CoreId),                "CoreId", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT17_OFFSET (Flags),                 "Flags", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 18: Legacy I/O interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt18[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT18_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT18_OFFSET (Address),               "Address", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT18_OFFSET (Size),                  "Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT18_OFFSET (Cascade),               "Cascade", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT18_OFFSET (CascadeMap),            "CascadeMap", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 19: HT interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt19[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT19_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT19_OFFSET (Address),               "Address", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT19_OFFSET (Size),                  "Size", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT19_OFFSET (Cascade),               "Cascade", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 20: Extend I/O interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt20[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT20_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT20_OFFSET (Cascade),               "Cascade", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT20_OFFSET (Node),                  "Node", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT20_OFFSET (NodeMap),               "NodeMap", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 21: MSI controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt21[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT21_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT21_OFFSET (MsgAddress),            "MsgAddress", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT21_OFFSET (Start),                 "Start", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT21_OFFSET (Count),                 "Count", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 22: BIO interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt22[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT22_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT22_OFFSET (Address),               "Address", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT22_OFFSET (Size),                  "Size", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT22_OFFSET (Id),                    "Id", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT22_OFFSET (GsiBase),               "GsiBase", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 23: LPC interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt23[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT23_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT23_OFFSET (Address),               "Address", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT23_OFFSET (Size),                  "Size", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT23_OFFSET (Cascade),               "Cascade", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 24: RINTC interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt24[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT24_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT24_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT24_OFFSET (Flags),                 "Flags", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT24_OFFSET (HartId),                "HartId", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT24_OFFSET (Uid),                   "Uid", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT24_OFFSET (ExtIntcId),             "ExtIntcId", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT24_OFFSET (ImsicAddr),             "ImsicAddr", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT24_OFFSET (ImsicSize),             "ImsicSize", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 25: RISC-V IMSIC interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt25[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (Reserved),              "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT25_OFFSET (Flags),                 "Flags", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT25_OFFSET (NumIds),                "NumIds", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT25_OFFSET (NumGuestIds),           "NumGuestIds", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (GuestIndexBits),        "GuestIndexBits", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (HartIndexBits),         "HartIndexBits", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (GroupIndexBits),        "GroupIndexBits", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT25_OFFSET (GroupIndexShift),       "GroupIndexShift", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 26: RISC-V APLIC interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt26[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT26_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT26_OFFSET (Id),                    "Id", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT26_OFFSET (Flags),                 "Flags", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT26_OFFSET (HwId),                  "HwId", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT26_OFFSET (NumIdcs),               "NumIdcs", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT26_OFFSET (NumSources),            "NumSources", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT26_OFFSET (GsiBase),               "GsiBase", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT26_OFFSET (BaseAddr),              "BaseAddr", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT26_OFFSET (Size),                  "Size", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 27: RISC-V PLIC interrupt controller */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt27[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MADT27_OFFSET (Version),               "Version", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT27_OFFSET (Id),                    "Id", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT27_OFFSET (HwId),                  "HwId", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT27_OFFSET (NumIrqs),               "NumIrqs", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT27_OFFSET (MaxPrio),               "MaxPrio", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT27_OFFSET (Flags),                 "Flags", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT27_OFFSET (Size),                  "Size", 0},
+    {ACPI_DMT_UINT64,   ACPI_MADT27_OFFSET (BaseAddr),              "BaseAddr", 0},
+    {ACPI_DMT_UINT32,   ACPI_MADT27_OFFSET (GsiBase),               "GsiBase", 0},
+   ACPI_DMT_TERMINATOR
+};
+
+/* 128: OEM data structure */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt128[] =
+{
+    {ACPI_DMT_RAW_BUFFER, 0,                                        "OEM Data", 0},
+   ACPI_DMT_TERMINATOR
+};
 
 /*******************************************************************************
  *
@@ -934,6 +1201,141 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMchi[] =
     ACPI_DMT_TERMINATOR
 };
 
+/*******************************************************************************
+ *
+ * MPAM - Memory System Resource Partitioning and Monitoring Tables
+ * Arm's DEN0065 MPAM ACPI 2.0. December 2022.
+ ******************************************************************************/
+
+/* MPAM subtables */
+
+/* 0: MPAM Resource Node Structure - A root MSC table.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 4: MPAM MSC node body.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam0[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_MPAM0_OFFSET (Length),                      "Length", 0},
+    {ACPI_DMT_UINT8,    ACPI_MPAM0_OFFSET (InterfaceType),               "Interface type", 0},
+    {ACPI_DMT_UINT8,    ACPI_MPAM0_OFFSET (Reserved),                    "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (Identifier),                  "Identifier", 0},
+    {ACPI_DMT_UINT64,   ACPI_MPAM0_OFFSET (BaseAddress),                 "Base address", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (MMIOSize),                    "MMIO size", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (OverflowInterrupt),           "Overflow interrupt", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (OverflowInterruptFlags),      "Overflow interrupt flags", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (Reserved1),                   "Reserved1", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (OverflowInterruptAffinity),   "Overflow interrupt affinity", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (ErrorInterrupt),              "Error interrupt", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (ErrorInterruptFlags),         "Error interrupt flags", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (Reserved2),                   "Reserved2", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (ErrorInterruptAffinity),      "Error interrupt affinity", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (MaxNrdyUsec),                 "MAX_NRDY_USEC", 0},
+    {ACPI_DMT_NAME8,    ACPI_MPAM0_OFFSET (HardwareIdLinkedDevice),      "Hardware ID of linked device", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (InstanceIdLinkedDevice),      "Instance ID of linked device", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM0_OFFSET (NumResourceNodes),            "Number of resource nodes", 0},
+
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1: MPAM Resource (RIS) Node Structure - A subtable of MSC Nodes.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 9: Resource node.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1[] =
+{
+    {ACPI_DMT_UINT32,          ACPI_MPAM1_OFFSET (Identifier),              "Identifier", 0},
+    {ACPI_DMT_UINT8,           ACPI_MPAM1_OFFSET (RISIndex),                "RIS Index", 0},
+    {ACPI_DMT_UINT16,          ACPI_MPAM1_OFFSET (Reserved1),               "Reserved1", 0},
+    {ACPI_DMT_MPAM_LOCATOR,    ACPI_MPAM1_OFFSET (LocatorType),             "Locator type", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* An RIS field part of the RIS subtable */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1Deps[] =
+{
+    {ACPI_DMT_UINT32, 0, "Number of functional dependencies", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1A: MPAM Processor cache locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 13.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1A[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1A_OFFSET (CacheReference),                "Cache reference", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1A_OFFSET (Reserved),                      "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1B: MPAM Memory locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 14.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1B[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1B_OFFSET (ProximityDomain),               "Proximity domain", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1B_OFFSET (Reserved),                      "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1C: MPAM SMMU locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 15.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1C[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1C_OFFSET (SmmuInterface),                 "SMMU Interface", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1C_OFFSET (Reserved),                      "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1D: MPAM Memory-side cache locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 16.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1D[] =
+{
+    {ACPI_DMT_UINT56,   ACPI_MPAM1D_OFFSET (Reserved),                      "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_MPAM1D_OFFSET (Level),                         "Level", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1D_OFFSET (Reference),                     "Reference", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1E: MPAM ACPI device locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 17.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1E[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1E_OFFSET (AcpiHwId),                      "ACPI Hardware ID", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1E_OFFSET (AcpiUniqueId),                  "ACPI Unique ID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1F: MPAM Interconnect locator descriptor. A subtable of RIS.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 18.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1F[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1F_OFFSET (InterConnectDescTblOff),        "Interconnect descriptor table offset", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1F_OFFSET (Reserved),                      "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1G: MPAM Locator structure.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 12.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam1G[] =
+{
+    {ACPI_DMT_UINT64,   ACPI_MPAM1G_OFFSET (Descriptor1),                   "Descriptor1", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM1G_OFFSET (Descriptor2),                   "Descriptor2", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 2: MPAM Functional dependency descriptor.
+ * Arm's DEN0065 MPAM ACPI 2.0. Table 10.
+ */
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMpam2[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_MPAM2_OFFSET (Producer),                       "Producer", 0},
+    {ACPI_DMT_UINT32,   ACPI_MPAM2_OFFSET (Reserved),                       "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 
 /*******************************************************************************
  *
@@ -1016,6 +1418,39 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMpst2[] =
 };
 
 
+/*******************************************************************************
+ *
+ * MRRM - Memory Range and Region Mapping Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMrrm[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_MRRM_OFFSET (MaxMemRegion),            "Max Memory Regions", 0},
+    {ACPI_DMT_UINT8,    ACPI_MRRM_OFFSET (Flags),                   "Region Assignment Type", 0},
+    {ACPI_DMT_BUF26,    ACPI_MRRM_OFFSET (Reserved),                "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* MRRM Subtable */
+
+/* 0: Memory Range entry */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoMrrm0[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_MRRM0_OFFSET (Header.Type),            "Memory Range", 0},
+    {ACPI_DMT_UINT16,   ACPI_MRRM0_OFFSET (Header.Length),          "Length", DT_LENGTH},
+    {ACPI_DMT_UINT32,   ACPI_MRRM0_OFFSET (Reserved0),              "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_MRRM0_OFFSET (AddrBase),               "System Address Base", 0},
+    {ACPI_DMT_UINT64,   ACPI_MRRM0_OFFSET (AddrLen),                "System Address Length", 0},
+    {ACPI_DMT_UINT16,   ACPI_MRRM0_OFFSET (RegionIdFlags),          "Region Valid Flags", 0},
+    {ACPI_DMT_UINT8,    ACPI_MRRM0_OFFSET (LocalRegionId),          "Static Local Region ID", 0},
+    {ACPI_DMT_UINT8,    ACPI_MRRM0_OFFSET (RemoteRegionId),         "Static Remote Region ID", 0},
+    {ACPI_DMT_UINT32,   ACPI_MRRM0_OFFSET (Reserved1),              "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * MSCT - Maximum System Characteristics Table (ACPI 4.0)
@@ -1213,215 +1648,6 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoNfit7[] =
 };
 
 
-/*******************************************************************************
- *
- * NHLT - Non HD Audio Link Table. Conforms to Intel Smart Sound Technology
- * NHLT Specification, January 2020 Revision 0.8.1
- *
- ******************************************************************************/
-
-/* Main table */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT_OFFSET (EndpointCount),           "Endpoint Count", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Endpoint config */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt0[] =
-{
-    {ACPI_DMT_UINT32,   ACPI_NHLT0_OFFSET (DescriptorLength),       "Descriptor Length", DT_LENGTH},
-    {ACPI_DMT_NHLT1,    ACPI_NHLT0_OFFSET (LinkType),               "Link Type", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT0_OFFSET (InstanceId),             "Instance Id", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT0_OFFSET (VendorId),               "Vendor Id", 0},
-    {ACPI_DMT_NHLT1e,   ACPI_NHLT0_OFFSET (DeviceId),               "Device Id", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT0_OFFSET (RevisionId),             "Revision Id", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT0_OFFSET (SubsystemId),            "Subsystem Id", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT0_OFFSET (DeviceType),             "Device Type", 0},
-    {ACPI_DMT_NHLT1a,   ACPI_NHLT0_OFFSET (Direction),              "Direction", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT0_OFFSET (VirtualBusId),           "Virtual Bus Id", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Device_Specific config */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt1[] =
-{
-    {ACPI_DMT_UINT32,   ACPI_NHLT1_OFFSET (CapabilitiesSize),       "Capabilities Size", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT1_OFFSET (VirtualSlot),            "Virtual Slot", 0},
-    {ACPI_DMT_NHLT1f,   ACPI_NHLT1_OFFSET (ConfigType),             "Config Type", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Wave Format Extensible */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt2[] =
-{
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (FormatTag),              "Format Tag", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (ChannelCount),           "Channel Count", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT2_OFFSET (SamplesPerSec),          "Samples Per Second", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT2_OFFSET (AvgBytesPerSec),         "Average Bytes Per Second", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (BlockAlign),             "Block Alignment", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (BitsPerSample),          "Bits Per Sample", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (ExtraFormatSize),        "Extra Format Size", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT2_OFFSET (ValidBitsPerSample),     "Valid Bits Per Sample", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT2_OFFSET (ChannelMask),            "Channel Mask", 0},
-    {ACPI_DMT_UUID,     ACPI_NHLT2_OFFSET (SubFormatGuid),          "SubFormat GUID", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Format Config (wave_format_extensible structure) */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt3[] =
-{
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.FormatTag),               "Format Tag", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.ChannelCount),            "Channel Count", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT3_OFFSET (Format.SamplesPerSec),           "Samples Per Second", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT3_OFFSET (Format.AvgBytesPerSec),          "Average Bytes Per Second", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.BlockAlign),              "Block Alignment", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.BitsPerSample),           "Bits Per Sample", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.ExtraFormatSize),         "Extra Format Size", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT3_OFFSET (Format.ValidBitsPerSample),      "Valid Bits Per Sample", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT3_OFFSET (Format.ChannelMask),             "Channel Mask", 0},
-    {ACPI_DMT_UUID,     ACPI_NHLT3_OFFSET (Format.SubFormatGuid),           "SubFormat GUID", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT3_OFFSET (CapabilitySize),                 "Capabilities Length", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/*
- * We treat the binary Capabilities field as its own subtable (to make
- * ACPI_DMT_RAW_BUFFER work properly).
- */
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt3a[] =
-{
-    {ACPI_DMT_RAW_BUFFER, 0,                                        "Capabilities", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Formats Config */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt4[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT4_OFFSET (FormatsCount),           "Formats Count", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Specific Config, CapabilitiesSize == 2 */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt5[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT5_OFFSET (VirtualSlot),            "Virtual Slot", 0},
-    {ACPI_DMT_NHLT1f,   ACPI_NHLT5_OFFSET (ConfigType),             "Config Type", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Specific Config, CapabilitiesSize == 3 */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt5a[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT5A_OFFSET (VirtualSlot),           "Virtual Slot", 0},
-    {ACPI_DMT_NHLT1f,   ACPI_NHLT5A_OFFSET (ConfigType),            "Config Type", 0},
-    {ACPI_DMT_NHLT1d,   ACPI_NHLT5A_OFFSET (ArrayType),             "Array Type", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Specific Config, CapabilitiesSize == 0 */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt5b[] =
-{
-    {ACPI_DMT_UINT32,    ACPI_NHLT5B_OFFSET (CapabilitiesSize),     "Capabilities Size", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Specific Config, CapabilitiesSize == 1 */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt5c[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT5C_OFFSET (VirtualSlot),           "Virtual Slot", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Microphone array Config */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt6a[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT6A_OFFSET (MicrophoneCount),       "Microphone Count", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Render Feedback Device Config, CapabilitiesSize == 7 */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt6b[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT6B_OFFSET (FeedbackVirtualSlot),       "Feedback Virtual Slot", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6B_OFFSET (FeedbackChannels),          "Feedback Channels", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6B_OFFSET (FeedbackValidBitsPerSample),"Valid Bits Per Sample", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt6[] =
-{
-    {ACPI_DMT_NHLT1b,   ACPI_NHLT6_OFFSET (Type),                   "Type", 0},
-    {ACPI_DMT_NHLT1c,   ACPI_NHLT6_OFFSET (Panel),                  "Panel", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (SpeakerPositionDistance), "Speaker Position Distance", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (HorizontalOffset),       "Horizontal Offset", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (VerticalOffset),         "Vertical Offset", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT6_OFFSET (FrequencyLowBand),       "Frequency Low Band", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT6_OFFSET (FrequencyHighBand),      "Frequency High Band", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (DirectionAngle),         "Direction Angle", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (ElevationAngle),         "Elevation Angle", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (WorkVerticalAngleBegin), "Work Vertical Angle Begin", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (WorkVerticalAngleEnd),   "Work Vertical Angle End", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (WorkHorizontalAngleBegin), "Work Horizontal Angle Begin", 0},
-    {ACPI_DMT_UINT16,   ACPI_NHLT6_OFFSET (WorkHorizontalAngleEnd), "Work Horizontal Angle End", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Number of Linux-specific structures */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt7[] =
-{
-    {ACPI_DMT_UINT8,    ACPI_NHLT7_OFFSET (StructureCount),         "Linux-specific Count", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* The Linux-specific structure */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt7a[] =
-{
-    {ACPI_DMT_BUF16,    ACPI_NHLT7A_OFFSET (DeviceId),              "Device ID", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT7A_OFFSET (DeviceInstanceId),      "Device Instance ID", 0},
-    {ACPI_DMT_UINT8,    ACPI_NHLT7A_OFFSET (DevicePortId),          "Device Port ID", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt7b[] =
-{
-    {ACPI_DMT_BUF18,    ACPI_NHLT7B_OFFSET (SpecificData),          "Specific Data", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Table terminator (may or may not be present) */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt8[] =
-{
-    {ACPI_DMT_UINT32,   ACPI_NHLT8_OFFSET (TerminatorValue),        "Terminator Value", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT8_OFFSET (TerminatorSignature),    "Terminator Signature", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-/* Sensitivity Extension */
-
-ACPI_DMTABLE_INFO           AcpiDmTableInfoNhlt9[] =
-{
-    {ACPI_DMT_UINT32,   ACPI_NHLT9_OFFSET (SNR),                    "Signal-to-noise ratio", 0},
-    {ACPI_DMT_UINT32,   ACPI_NHLT9_OFFSET (Sensitivity),            "Mic Sensitivity", 0},
-    ACPI_DMT_TERMINATOR
-};
-
-
 /*******************************************************************************
  *
  * PCCT - Platform Communications Channel Table (ACPI 5.0)
@@ -1617,11 +1843,13 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPdtt0[] =
  *
  ******************************************************************************/
 
+/* Common subtable header */
+
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhatHdr[] =
 {
-    {ACPI_DMT_PHAT,     ACPI_PHATH_OFFSET (Type),                 "Subtable Type", 0},
-    {ACPI_DMT_UINT16,   ACPI_PHATH_OFFSET (Length),               "Length", 0},
-    {ACPI_DMT_UINT8,    ACPI_PHATH_OFFSET (Revision),             "Revision", 0},
+    {ACPI_DMT_PHAT,     ACPI_PHATH_OFFSET (Type),                   "Subtable Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_PHATH_OFFSET (Length),                 "Length", DT_LENGTH},
+    {ACPI_DMT_UINT8,    ACPI_PHATH_OFFSET (Revision),               "Revision", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1629,16 +1857,16 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPhatHdr[] =
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat0[] =
 {
-    {ACPI_DMT_UINT24,   ACPI_PHAT0_OFFSET (Reserved),             "Reserved", 0},
-    {ACPI_DMT_UINT32,   ACPI_PHAT0_OFFSET (ElementCount),         "Element Count", 0},
+    {ACPI_DMT_UINT24,   ACPI_PHAT0_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_PHAT0_OFFSET (ElementCount),           "Element Count", 0},
     ACPI_DMT_TERMINATOR
 };
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat0a[] =
 {
-    {ACPI_DMT_UUID,     ACPI_PHAT0A_OFFSET (Guid),                "GUID", 0},
-    {ACPI_DMT_UINT64,   ACPI_PHAT0A_OFFSET (VersionValue),        "Version Value", 0},
-    {ACPI_DMT_UINT32,   ACPI_PHAT0A_OFFSET (ProducerId),          "Producer ID", 0},
+    {ACPI_DMT_UUID,     ACPI_PHAT0A_OFFSET (Guid),                  "GUID", 0},
+    {ACPI_DMT_UINT64,   ACPI_PHAT0A_OFFSET (VersionValue),          "Version Value", 0},
+    {ACPI_DMT_UINT32,   ACPI_PHAT0A_OFFSET (ProducerId),            "Producer ID", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1646,22 +1874,22 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat0a[] =
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat1[] =
 {
-    {ACPI_DMT_UINT16,   ACPI_PHAT1_OFFSET (Reserved),             "Reserved", 0},
-    {ACPI_DMT_UINT8,    ACPI_PHAT1_OFFSET (Health),               "Health", 0},
-    {ACPI_DMT_UUID,     ACPI_PHAT1_OFFSET (DeviceGuid),           "Device GUID", 0},
-    {ACPI_DMT_UINT32,   ACPI_PHAT1_OFFSET (DeviceSpecificOffset), "Device specific offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_PHAT1_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_PHAT1_OFFSET (Health),                 "Health", 0},
+    {ACPI_DMT_UUID,     ACPI_PHAT1_OFFSET (DeviceGuid),             "Device GUID", 0},
+    {ACPI_DMT_UINT32,   ACPI_PHAT1_OFFSET (DeviceSpecificOffset),   "Device-Specific Offset", 0},
     ACPI_DMT_TERMINATOR
 };
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat1a[] =
 {
-    {ACPI_DMT_STRING,   0,                                          "Namepath", 0},
+    {ACPI_DMT_UNICODE, 0,                                           "Device Path", 0},
     ACPI_DMT_TERMINATOR
 };
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPhat1b[] =
 {
-    {ACPI_DMT_RAW_BUFFER, 0,                                        "Vendor Data", 0},
+    {ACPI_DMT_RAW_BUFFER, 0,                                        "Device-Specific Data", DT_OPTIONAL},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1860,7 +2088,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPrmtHandler[] =
     {ACPI_DMT_UINT16,   ACPI_PRMT1_OFFSET (Length),                 "Length", 0},
     {ACPI_DMT_UUID,     ACPI_PRMT1_OFFSET (HandlerGuid[0]),         "Handler GUID", 0},
     {ACPI_DMT_UINT64,   ACPI_PRMT1_OFFSET (HandlerAddress),         "Handler address", 0},
-    {ACPI_DMT_UINT64,   ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Satic Data Address", 0},
+    {ACPI_DMT_UINT64,   ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Static Data Address", 0},
     {ACPI_DMT_UINT64,   ACPI_PRMT1_OFFSET (AcpiParamBufferAddress), "ACPI Parameter Address", 0},
     ACPI_DMT_NEW_LINE,
     ACPI_DMT_TERMINATOR
@@ -1881,6 +2109,31 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoRasf[] =
 };
 
 
+/*******************************************************************************
+ *
+ * RAS2 -  RAS2 Feature table (ACPI 6.5)
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRas2[] =
+{
+    {ACPI_DMT_UINT16,    ACPI_RAS2_OFFSET (Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT16,    ACPI_RAS2_OFFSET (NumPccDescs),             "Number of PCC Descriptors", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* RAS2 PCC Descriptor */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRas2PccDesc[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_RAS2_PCC_DESC_OFFSET (ChannelId),              "Channel ID", 0},
+    {ACPI_DMT_UINT16,   ACPI_RAS2_PCC_DESC_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_RAS2_PCC_DESC_OFFSET (FeatureType),            "Feature Type", 0},
+    {ACPI_DMT_UINT32,   ACPI_RAS2_PCC_DESC_OFFSET (Instance),               "Instance", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * RGRT -  Regulatory Graphics Resource Table
@@ -1906,6 +2159,178 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoRgrt0[] =
 };
 
 
+/*******************************************************************************
+ *
+ * RHCT - RISC-V Hart Capabilities Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhct[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_RHCT_OFFSET (Flags),            "Flags", 0},
+    {ACPI_DMT_UINT64,   ACPI_RHCT_OFFSET (TimeBaseFreq),     "Timer Base Frequency", 0},
+    {ACPI_DMT_UINT32,   ACPI_RHCT_OFFSET (NodeCount),        "Number of nodes", 0},
+    {ACPI_DMT_UINT32,   ACPI_RHCT_OFFSET (NodeOffset),       "Offset to the node array", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/* Common Subtable header (one per Subtable) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctNodeHdr[] =
+{
+    {ACPI_DMT_RHCT,      ACPI_RHCTH_OFFSET (Type),            "Subtable Type", 0},
+    {ACPI_DMT_UINT16,    ACPI_RHCTH_OFFSET (Length),          "Length", DT_LENGTH},
+    {ACPI_DMT_UINT16,    ACPI_RHCTH_OFFSET (Revision),        "Revision", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 0: ISA string type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctIsa1[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_RHCT0_OFFSET (IsaLength),        "ISA string length", 0},
+    {ACPI_DMT_STRING,   ACPI_RHCT0_OFFSET (Isa[0]),           "ISA string", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/* Optional padding field */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctIsaPad[] =
+{
+    {ACPI_DMT_RAW_BUFFER, 0,                                  "Optional Padding", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1: CMO node type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctCmo1[] =
+{
+    {ACPI_DMT_UINT8,   ACPI_RHCT1_OFFSET (Reserved),          "Reserved", 0},
+    {ACPI_DMT_UINT8,   ACPI_RHCT1_OFFSET (CbomSize),          "CBOM Block Size", 0},
+    {ACPI_DMT_UINT8,   ACPI_RHCT1_OFFSET (CbopSize),          "CBOP Block Size", 0},
+    {ACPI_DMT_UINT8,   ACPI_RHCT1_OFFSET (CbozSize),          "CBOZ Block Size", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 2: MMU node type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctMmu1[] =
+{
+    {ACPI_DMT_UINT8,   ACPI_RHCT2_OFFSET (Reserved),          "Reserved", 0},
+    {ACPI_DMT_UINT8,   ACPI_RHCT2_OFFSET (MmuType),           "MMU Type", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 0xFFFF: Hart Info type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctHartInfo1[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_RHCTFFFF_OFFSET (NumOffsets),    "Number of offsets", 0},
+    {ACPI_DMT_UINT32,   ACPI_RHCTFFFF_OFFSET (Uid),           "Processor UID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctHartInfo2[] =
+{
+    {ACPI_DMT_UINT32,   0,                                    "Nodes", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
+ * RIMT - RISC-V IO Mapping Table
+ *
+ * https://github.com/riscv-non-isa/riscv-acpi-rimt
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimt[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_RIMT_OFFSET (NumNodes),              "Number of RIMT Nodes", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMT_OFFSET (NodeOffset),            "Offset to RIMT Node Array", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMT_OFFSET (Reserved),              "Reserved", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+/* Common Subtable header (one per Subtable) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtNodeHdr[] =
+{
+    {ACPI_DMT_UINT8,     ACPI_RIMTH_OFFSET (Type),                "Type", 0},
+    {ACPI_DMT_UINT8,     ACPI_RIMTH_OFFSET (Revision),            "Revision", 0},
+    {ACPI_DMT_UINT16,    ACPI_RIMTH_OFFSET (Length),              "Length", 0},
+    {ACPI_DMT_UINT16,    ACPI_RIMTH_OFFSET (Reserved),            "Reserved", 0},
+    {ACPI_DMT_UINT16,    ACPI_RIMTH_OFFSET (Id),                  "ID", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 0: IOMMU Node type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtIommu[] =
+{
+    {ACPI_DMT_NAME8,    ACPI_RIMTI_OFFSET (HardwareId),           "Hardware ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_RIMTI_OFFSET (BaseAddress),          "Base Address", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTI_OFFSET (Flags),                "Flags", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTI_OFFSET (ProximityDomain),      "Proximity Domain", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTI_OFFSET (PcieSegmentNumber),    "PCIe Segment number", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTI_OFFSET (PcieBdf),              "PCIe B/D/F", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTI_OFFSET (NumInterruptWires),    "Number of interrupt wires", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTI_OFFSET (InterruptWireOffset),  "Interrupt wire array offset", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtIommuWire[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_RIMTW_OFFSET (IrqNum),               "Interrupt Number", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTW_OFFSET (Flags),                "Flags", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 1: PCIE Root Complex Node type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtPcieRc[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_RIMTP_OFFSET (Flags),               "Flags", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTP_OFFSET (Reserved),            "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTP_OFFSET (PcieSegmentNumber),   "PCIe Segment number", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTP_OFFSET (IdMappingOffset),     "ID mapping array offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTP_OFFSET (NumIdMappings),       "Number of ID mappings", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtIdMapping[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_RIMTM_OFFSET (SourceIdBase),        "Source ID Base", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTM_OFFSET (NumIds),              "Number of IDs", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTM_OFFSET (DestIdBase),          "Destination Device ID Base", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTM_OFFSET (DestOffset),          "Destination IOMMU Offset", 0},
+    {ACPI_DMT_UINT32,   ACPI_RIMTM_OFFSET (Flags),               "Flags", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+/* 2: Platform Device Node type */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtPlatDev[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_RIMTN_OFFSET (IdMappingOffset),     "ID mapping array offset", 0},
+    {ACPI_DMT_UINT16,   ACPI_RIMTN_OFFSET (NumIdMappings),       "Number of ID mappings", 0},
+    {ACPI_DMT_STRING,   ACPI_RIMTN_OFFSET (DeviceName[0]),       "Device Object Name", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoRimtPlatDevPad[] =
+{
+    {ACPI_DMT_RAW_BUFFER, 0,                                     "Padding", DT_OPTIONAL},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * S3PT - S3 Performance Table
@@ -1995,7 +2420,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSdevHdr[] =
     {ACPI_DMT_UINT8,    ACPI_SDEVH_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_SDEVH_FLAG_OFFSET (Flags,0),           "Allow handoff to unsecure OS", 0},
     {ACPI_DMT_FLAG1,    ACPI_SDEVH_FLAG_OFFSET (Flags,0),           "Secure access components present", 0},
-    {ACPI_DMT_UINT16,   ACPI_SDEVH_OFFSET (Length),                 "Length", 0},
+    {ACPI_DMT_UINT16,   ACPI_SDEVH_OFFSET (Length),                 "Length",  DT_LENGTH},
     ACPI_DMT_TERMINATOR
 };
 
diff --git a/sys/contrib/dev/acpica/source/common/dmtbinfo3.c b/sys/contrib/dev/acpica/source/common/dmtbinfo3.c
index 6bdaf676ba..24187f6afb 100644
--- a/sys/contrib/dev/acpica/source/common/dmtbinfo3.c
+++ b/sys/contrib/dev/acpica/source/common/dmtbinfo3.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -190,6 +190,23 @@
  * Each entry is of the form:  <Field Type, Field Offset, Field Name>
  */
 
+/*******************************************************************************
+ *
+ * CCEL - CC-Event Log Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoCcel[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_CCEL_OFFSET (CCType),                  "CC Type", 0},
+    {ACPI_DMT_UINT8,    ACPI_CCEL_OFFSET (CCSubType),               "CC Sub Type", 0},
+    {ACPI_DMT_UINT16,   ACPI_CCEL_OFFSET (Reserved),                "Reserved", 0},
+    {ACPI_DMT_UINT64,   ACPI_CCEL_OFFSET (LogAreaMinimumLength),    "Log Area Minimum Length", 0},
+    {ACPI_DMT_UINT64,   ACPI_CCEL_OFFSET (LogAreaStartAddress),     "Log Area Start Address", 0},
+    ACPI_DMT_TERMINATOR
+};
+
+
 /*******************************************************************************
  *
  * SLIC - Software Licensing Description Table. This table contains the standard
@@ -238,7 +255,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSpcr[] =
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (StopBits),                "Stop Bits", 0},
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (FlowControl),             "Flow Control", 0},
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (TerminalType),            "Terminal Type", 0},
-    {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (Language),                "Language", 0},
     {ACPI_DMT_UINT16,   ACPI_SPCR_OFFSET (PciDeviceId),             "PCI Device ID", 0},
     {ACPI_DMT_UINT16,   ACPI_SPCR_OFFSET (PciVendorId),             "PCI Vendor ID", 0},
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (PciBus),                  "PCI Bus", 0},
@@ -246,7 +263,11 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSpcr[] =
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (PciFunction),             "PCI Function", 0},
     {ACPI_DMT_UINT32,   ACPI_SPCR_OFFSET (PciFlags),                "PCI Flags", 0},
     {ACPI_DMT_UINT8,    ACPI_SPCR_OFFSET (PciSegment),              "PCI Segment", 0},
-    {ACPI_DMT_UINT32,   ACPI_SPCR_OFFSET (Reserved2),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_SPCR_OFFSET (UartClkFreq),             "Uart Clock Freq", 0},
+    {ACPI_DMT_UINT32,   ACPI_SPCR_OFFSET (PreciseBaudrate),         "Precise Baud rate", 0},
+    {ACPI_DMT_UINT16,   ACPI_SPCR_OFFSET (NameSpaceStringLength),   "NameSpaceStringLength", 0},
+    {ACPI_DMT_UINT16,   ACPI_SPCR_OFFSET (NameSpaceStringOffset),   "NameSpaceStringOffset", 0},
+    {ACPI_DMT_STRING,   ACPI_SPCR_OFFSET (NameSpaceString),         "NamespaceString", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -358,7 +379,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat3[] =
     ACPI_DMT_TERMINATOR
 };
 
-/* 4: GCC ITS Affinity (ACPI 6.2) */
+/* 4: GIC ITS Affinity (ACPI 6.2) */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat4[] =
 {
@@ -396,6 +417,19 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat6[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 7: RINTC Affinity Structure (ACPI 6.6) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat7[] =
+{
+    {ACPI_DMT_UINT16,   ACPI_SRAT7_OFFSET (Reserved),               "Reserved", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT7_OFFSET (ProximityDomain),        "Proximity Domain", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT7_OFFSET (AcpiProcessorUid),       "Acpi Processor UID", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT7_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_SRAT7_FLAG_OFFSET (Flags,0),           "Enabled", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT7_OFFSET (ClockDomain),            "Clock Domain", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 /*******************************************************************************
  *
  * STAO - Status Override Table (_STA override) - ACPI 6.0
diff --git a/sys/contrib/dev/acpica/source/common/getopt.c b/sys/contrib/dev/acpica/source/common/getopt.c
index 766ab8e354..9ca2db57f5 100644
--- a/sys/contrib/dev/acpica/source/common/getopt.c
+++ b/sys/contrib/dev/acpica/source/common/getopt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslallocate.c b/sys/contrib/dev/acpica/source/compiler/aslallocate.c
index 8be711b2c0..980af908e6 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslallocate.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslallocate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -295,9 +295,13 @@ void
 UtFreeLineBuffers (
     void)
 {
-
     free (AslGbl_CurrentLineBuffer);
+
     free (AslGbl_MainTokenBuffer);
+
     free (AslGbl_MacroTokenBuffer);
+
+    free (AslGbl_MacroTokenReplaceBuffer);
+
     free (AslGbl_ExpressionTokenBuffer);
 }
diff --git a/sys/contrib/dev/acpica/source/compiler/aslanalyze.c b/sys/contrib/dev/acpica/source/compiler/aslanalyze.c
index c54ff8a215..cad84bc00a 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslanalyze.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslanalyze.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -572,10 +572,22 @@ ApCheckForGpeNameConflict (
     ACPI_PARSE_OBJECT       *NextOp;
     UINT32                  GpeNumber;
     char                    Name[ACPI_NAMESEG_SIZE + 1];
-    char                    Target[ACPI_NAMESEG_SIZE];
+    char                    Target[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
 
 
-    /* Need a null-terminated string version of NameSeg */
+    /**
+     * Need a null-terminated string version of NameSeg
+     *
+     * NOTE: during a review on Name[ACPI_NAMESEG_SIZE + 1] having an extra
+     *       byte[1], compiler testing exhibited a difference in behavior between
+     *       GCC and Clang[2] (at least; MSVC may also exhibit the same) in
+     *       how optimization is done. The extra byte is needed to ensure
+     *       the signature does not get mangled, subsequently avoiding
+     *       GpeNumber being a completely different return value from strtoul.
+     *
+     *       [1] https://github.com/acpica/acpica/pull/1019#discussion_r2058687704
+     *       [2] https://github.com/acpica/acpica/pull/1019#discussion_r2061953039
+     */
 
     ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
     Name[ACPI_NAMESEG_SIZE] = 0;
diff --git a/sys/contrib/dev/acpica/source/compiler/aslascii.c b/sys/contrib/dev/acpica/source/compiler/aslascii.c
index 0e8c4d4e0f..7775c3877d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslascii.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslascii.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslbtypes.c b/sys/contrib/dev/acpica/source/compiler/aslbtypes.c
index ebb798a7d8..d1674daaef 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslbtypes.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslbtypes.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -501,10 +501,11 @@ AnGetBtype (
     ACPI_PARSE_OBJECT       *ReferencedNode;
     UINT32                  ThisNodeBtype = 0;
 
+    ACPI_FUNCTION_NAME (AnGetBtype);
 
     if (!Op)
     {
-        AcpiOsPrintf ("Null Op in AnGetBtype\n");
+        AcpiOsPrintf ("Null Op in %s\n",  ACPI_GET_FUNCTION_NAME);
         return (ACPI_UINT32_MAX);
     }
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcache.c b/sys/contrib/dev/acpica/source/compiler/aslcache.c
index 05ae19b74b..094c6422c1 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcache.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslcache.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -210,7 +210,8 @@ UtLocalCacheCalloc (
         }
     }
 
-    if ((AslGbl_StringCacheNext + Length) >= AslGbl_StringCacheLast)
+    if ((!AslGbl_StringCacheNext) ||
+        ((AslGbl_StringCacheNext + Length) >= AslGbl_StringCacheLast))
     {
         /* Allocate a new buffer */
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcodegen.c b/sys/contrib/dev/acpica/source/compiler/aslcodegen.c
index 757886893b..caaf983aea 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcodegen.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslcodegen.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -153,6 +153,7 @@
 #include "aslcompiler.y.h"
 #include "amlcode.h"
 #include "acconvert.h"
+#include "actbinfo.h"
 
 #define _COMPONENT          ACPI_COMPILER
         ACPI_MODULE_NAME    ("aslcodegen")
@@ -181,6 +182,10 @@ static void
 CgUpdateHeader (
     ACPI_PARSE_OBJECT       *Op);
 
+static void
+CgUpdateCdatHeader (
+    ACPI_PARSE_OBJECT       *Op);
+
 
 /*******************************************************************************
  *
@@ -207,7 +212,14 @@ CgGenerateAmlOutput (
         CgAmlWriteWalk, NULL, NULL);
 
     DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER2);
-    CgUpdateHeader (AslGbl_CurrentDB);
+    if (AcpiGbl_CDAT)
+    {
+        CgUpdateCdatHeader (AslGbl_CurrentDB);
+    }
+    else
+    {
+        CgUpdateHeader (AslGbl_CurrentDB);
+    }
 }
 
 
@@ -656,6 +668,67 @@ CgWriteTableHeader (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    CgUpdateCdatHeader
+ *
+ * PARAMETERS:  Op                  - Op for the Definition Block
+ *
+ * RETURN:      None.
+ *
+ * DESCRIPTION: Complete the ACPI table by calculating the checksum and
+ *              re-writing the header for the input definition block
+ *
+ ******************************************************************************/
+
+static void
+CgUpdateCdatHeader (
+    ACPI_PARSE_OBJECT       *Op)
+{
+    signed char             Sum;
+    UINT32                  i;
+    UINT32                  Length;
+    UINT8                   FileByte;
+    UINT8                   Checksum;
+
+
+    /* Calculate the checksum over the entire definition block */
+
+    Sum = 0;
+    Length = sizeof (ACPI_TABLE_CDAT) + Op->Asl.AmlSubtreeLength;
+    FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset);
+
+    for (i = 0; i < Length; i++)
+    {
+        if (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1) != AE_OK)
+        {
+            AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL,
+                "Table length is greater than size of the input file");
+            return;
+        }
+
+        Sum = (signed char) (Sum + FileByte);
+    }
+
+    Checksum = (UINT8) (0 - Sum);
+
+    DbgPrint (ASL_DEBUG_OUTPUT, "Computed checksum = %X\n", Checksum);
+
+    /* Re-write the checksum byte */
+
+    FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset +
+        ACPI_CDAT_OFFSET (Checksum));
+
+    FlWriteFile (ASL_FILE_AML_OUTPUT, &Checksum, 1);
+
+    /*
+     * Seek to the end of the file. This is done to support multiple file
+     * compilation. Doing this simplifies other parts of the codebase because
+     * it eliminates the need to seek for a different starting place.
+     */
+    FlSeekFile (ASL_FILE_AML_OUTPUT, Op->Asl.FinalAmlOffset + Length);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    CgUpdateHeader
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcompile.c b/sys/contrib/dev/acpica/source/compiler/aslcompile.c
index ffb7496dd6..bf401fd937 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcompile.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslcompile.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -241,7 +241,7 @@ CmDoCompile (
 
     if (AslGbl_SyntaxError)
     {
-        fprintf (stderr,
+        AslError (ASL_ERROR, ASL_MSG_SYNTAX, NULL,
             "Compiler aborting due to parser-detected syntax error(s)\n");
 
         /* Flag this error in the FileNode for compilation summary */
@@ -250,6 +250,8 @@ CmDoCompile (
         FileNode->ParserErrorDetected = TRUE;
         AslGbl_ParserErrorDetected = TRUE;
         LsDumpParseTree ();
+        AePrintErrorLog(ASL_FILE_STDERR);
+
         goto ErrorExit;
     }
 
@@ -267,6 +269,8 @@ CmDoCompile (
         goto ErrorExit;
     }
 
+    AePrintErrorLog(ASL_FILE_STDERR);
+
     /* Flush out any remaining source after parse tree is complete */
 
     Event = UtBeginEvent ("Flush source input");
@@ -283,10 +287,13 @@ CmDoCompile (
 
     LsDumpParseTree ();
 
+    AslGbl_ParserErrorDetected = FALSE;
+    AslGbl_SyntaxError = FALSE;
     UtEndEvent (Event);
     UtEndEvent (FullCompile);
-    return (AE_OK);
 
+    AslGbl_ParserErrorDetected = FALSE;
+    AslGbl_SyntaxError = FALSE;
 ErrorExit:
     UtEndEvent (FullCompile);
     return (AE_ERROR);
@@ -690,18 +697,24 @@ AslCompilerFileHeader (
         break;
     }
 
-    /* Compilation header with timestamp */
-
-    Aclock = time (NULL);
-    NewTime = ctime (&Aclock);
+    /* Compilation header (with timestamp) */
 
     FlPrintFile (FileId,
-        "%sCompilation of \"%s\" -",
+        "%sCompilation of \"%s\"",
         Prefix, AslGbl_Files[ASL_FILE_INPUT].Filename);
 
-    if (NewTime)
+    if (!AslGbl_Deterministic)
+    {
+        Aclock = time (NULL);
+        NewTime = ctime (&Aclock);
+        if (NewTime)
+        {
+            FlPrintFile (FileId, " - %s%s\n", NewTime, Prefix);
+        }
+    }
+    else
     {
-        FlPrintFile (FileId, " %s%s\n", NewTime, Prefix);
+        FlPrintFile (FileId, "\n");
     }
 
     switch (FileId)
@@ -915,7 +928,7 @@ CmCleanupAndExit (
 
     if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
-        printf ("\nMaximum error count (%d) exceeded\n",
+        printf ("\nMaximum error count (%d) exceeded (aslcompile.c)\n",
             ASL_MAX_ERROR_COUNT);
     }
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcompiler.h b/sys/contrib/dev/acpica/source/compiler/aslcompiler.h
index 5112ea4969..7fc1640120 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcompiler.h
+++ b/sys/contrib/dev/acpica/source/compiler/aslcompiler.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -1566,6 +1566,9 @@ ASL_RESOURCE_NODE *
 RsDoPinGroupConfigDescriptor (
     ASL_RESOURCE_INFO       *Info);
 
+ASL_RESOURCE_NODE *
+RsDoClockInputDescriptor (
+    ASL_RESOURCE_INFO       *Info);
 
 /*
  * aslrestype2d - DWord address descriptors
@@ -1579,9 +1582,12 @@ RsDoDwordMemoryDescriptor (
     ASL_RESOURCE_INFO       *Info);
 
 ASL_RESOURCE_NODE *
-RsDoDwordSpaceDescriptor (
+RsDoDwordPccDescriptor (
     ASL_RESOURCE_INFO       *Info);
 
+ASL_RESOURCE_NODE *
+RsDoDwordSpaceDescriptor (
+    ASL_RESOURCE_INFO       *Info);
 
 /*
  * aslrestype2e - Extended address descriptors
@@ -1610,6 +1616,10 @@ ASL_RESOURCE_NODE *
 RsDoQwordMemoryDescriptor (
     ASL_RESOURCE_INFO       *Info);
 
+ASL_RESOURCE_NODE *
+RsDoQwordPccDescriptor (
+    ASL_RESOURCE_INFO       *Info);
+
 ASL_RESOURCE_NODE *
 RsDoQwordSpaceDescriptor (
     ASL_RESOURCE_INFO       *Info);
@@ -1622,6 +1632,10 @@ ASL_RESOURCE_NODE *
 RsDoWordIoDescriptor (
     ASL_RESOURCE_INFO       *Info);
 
+ASL_RESOURCE_NODE *
+RsDoWordPccDescriptor (
+    ASL_RESOURCE_INFO       *Info);
+
 ASL_RESOURCE_NODE *
 RsDoWordSpaceDescriptor (
     ASL_RESOURCE_INFO       *Info);
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcompiler.l b/sys/contrib/dev/acpica/source/compiler/aslcompiler.l
index e0985362fb..e3fbf504e9 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcompiler.l
+++ b/sys/contrib/dev/acpica/source/compiler/aslcompiler.l
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -438,6 +438,7 @@ NamePathTail                [.]{NameSeg}
 "DMA"                       { count (1); return (PARSEOP_DMA); }
 "DWordIO"                   { count (1); return (PARSEOP_DWORDIO); }
 "DWordMemory"               { count (1); return (PARSEOP_DWORDMEMORY); }
+"DWordPcc"                  { count (1); return (PARSEOP_DWORDPCC); }
 "DWordSpace"                { count (1); return (PARSEOP_DWORDSPACE); }
 "EndDependentFn"            { count (1); return (PARSEOP_ENDDEPENDENTFN); }
 "ExtendedIO"                { count (1); return (PARSEOP_EXTENDEDIO); }
@@ -461,8 +462,10 @@ NamePathTail                [.]{NameSeg}
 "PinGroup"                  { count (1); return (PARSEOP_PINGROUP); }
 "PinGroupConfig"            { count (1); return (PARSEOP_PINGROUPCONFIG); }
 "PinGroupFunction"          { count (1); return (PARSEOP_PINGROUPFUNCTION); }
+"ClockInput"                { count (1); return (PARSEOP_CLOCKINPUT); }
 "QWordIO"                   { count (1); return (PARSEOP_QWORDIO); }
 "QWordMemory"               { count (1); return (PARSEOP_QWORDMEMORY); }
+"QWordPcc"                  { count (1); return (PARSEOP_DWORDPCC); }
 "QWordSpace"                { count (1); return (PARSEOP_QWORDSPACE); }
 "Register"                  { count (1); return (PARSEOP_REGISTER); }
 "SpiSerialBus"              { count (1); return (PARSEOP_SPI_SERIALBUS); }
@@ -475,6 +478,7 @@ NamePathTail                [.]{NameSeg}
 "VendorShort"               { count (1); return (PARSEOP_VENDORSHORT); }
 "WordBusNumber"             { count (1); return (PARSEOP_WORDBUSNUMBER); }
 "WordIO"                    { count (1); return (PARSEOP_WORDIO); }
+"WordPcc"                   { count (1); return (PARSEOP_DWORDPCC); }
 "WordSpace"                 { count (1); return (PARSEOP_WORDSPACE); }
 
 
@@ -665,6 +669,17 @@ NamePathTail                [.]{NameSeg}
 "PullDown"                  { count (0); return (PARSEOP_PIN_PULLDOWN); }
 "PullNone"                  { count (0); return (PARSEOP_PIN_NOPULL); }
 
+    /* ClockScaleKeyword: Resource Descriptors (ACPI 6.5) */
+
+"Hz"               { count (0); return (PARSEOP_CLOCK_HZ); }
+"KHz"              { count (0); return (PARSEOP_CLOCK_KHZ); }
+"MHz"              { count (0); return (PARSEOP_CLOCK_MHZ); }
+
+    /* ClockModeKeyword: Resource Descriptors (ACPI 6.5) */
+
+"Fixed"               { count (0); return (PARSEOP_CLOCK_FIXED); }
+"Variable"            { count (0); return (PARSEOP_CLOCK_VARIABLE); }
+
     /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */
 
 "PolarityLow"               { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); }
diff --git a/sys/contrib/dev/acpica/source/compiler/aslcstyle.y b/sys/contrib/dev/acpica/source/compiler/aslcstyle.y
index 2f032fac9d..59a1abea1b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslcstyle.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslcstyle.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asldebug.c b/sys/contrib/dev/acpica/source/compiler/asldebug.c
index 636fe05182..dc37941de4 100644
--- a/sys/contrib/dev/acpica/source/compiler/asldebug.c
+++ b/sys/contrib/dev/acpica/source/compiler/asldebug.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asldefine.h b/sys/contrib/dev/acpica/source/compiler/asldefine.h
index 9149ff6037..89b6b8a699 100644
--- a/sys/contrib/dev/acpica/source/compiler/asldefine.h
+++ b/sys/contrib/dev/acpica/source/compiler/asldefine.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -162,7 +162,7 @@
 #define ASL_CREATOR_ID              "INTL"
 #define ASL_DEFINE                  "__IASL__"
 #define ASL_PREFIX                  "iASL: "
-#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 6.3"
+#define ASL_COMPLIANCE              "Supports ACPI Specification Revision 6.5"
 
 
 /* Configuration constants */
diff --git a/sys/contrib/dev/acpica/source/compiler/aslerror.c b/sys/contrib/dev/acpica/source/compiler/aslerror.c
index d73d7de903..69ec08c484 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslerror.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslerror.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -1025,7 +1025,7 @@ AslLogNewError (
     AslGbl_ExceptionCount[ModifiedLevel]++;
     if (!AslGbl_IgnoreErrors && AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
     {
-        printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT);
+        printf ("\nMaximum error count (%u) exceeded (aslerror.c)\n", ASL_MAX_ERROR_COUNT);
 
         AslGbl_SourceLine = 0;
         AslGbl_NextError = AslGbl_ErrorLog;
diff --git a/sys/contrib/dev/acpica/source/compiler/aslexternal.c b/sys/contrib/dev/acpica/source/compiler/aslexternal.c
index 80edfd2bf9..6178654109 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslexternal.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslexternal.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslfileio.c b/sys/contrib/dev/acpica/source/compiler/aslfileio.c
index a55b2dbc29..a793952e4d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslfileio.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslfileio.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslfiles.c b/sys/contrib/dev/acpica/source/compiler/aslfiles.c
index 14403d3db8..e861fb042f 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslfiles.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslfiles.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -346,7 +346,9 @@ FlGetFileHandle (
 
     while (Current)
     {
-        if (!strcmp (Current->Files[InFileId].Filename, Filename))
+        if (!((Current->FileType == ASL_INPUT_TYPE_ASCII_DATA) &&
+            (InFileId == ASL_FILE_SOURCE_OUTPUT)) &&
+            !strcmp (Current->Files[InFileId].Filename, Filename))
         {
             return (Current->Files[OutFileId].Handle);
         }
diff --git a/sys/contrib/dev/acpica/source/compiler/aslfold.c b/sys/contrib/dev/acpica/source/compiler/aslfold.c
index d9cc88035e..ac6778937d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslfold.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslfold.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslglobal.h b/sys/contrib/dev/acpica/source/compiler/aslglobal.h
index 540d7dd9d3..c79758919f 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslglobal.h
+++ b/sys/contrib/dev/acpica/source/compiler/aslglobal.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -325,6 +325,7 @@ ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_ReferenceOptimizatio
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DisplayRemarks, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DisplayWarnings, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_DisplayOptimizations, FALSE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_Deterministic, TRUE);
 ASL_EXTERN UINT8                    ASL_INIT_GLOBAL (AslGbl_WarningLevel, ASL_WARNING);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_UseOriginalCompilerId, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (AslGbl_VerboseTemplates, FALSE);
diff --git a/sys/contrib/dev/acpica/source/compiler/aslhelp.c b/sys/contrib/dev/acpica/source/compiler/aslhelp.c
index 3131b9db03..8761d3269c 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslhelp.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslhelp.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -185,6 +185,7 @@ Usage (
     ACPI_OPTION ("-vd",             "Display compiler build date and time");
     ACPI_OPTION ("-vo",             "Enable optimization comments");
     ACPI_OPTION ("-vs",             "Disable signon");
+    ACPI_OPTION ("-ld",             "Disable deterministic output");
 
     printf ("\nHelp:\n");
     ACPI_OPTION ("-h",              "This message");
@@ -262,6 +263,7 @@ Usage (
     ACPI_OPTION ("",                "  (Obtain DSDT from current system if no input file)");
     ACPI_OPTION ("-df",             "Force disassembler to assume table contains valid AML");
     ACPI_OPTION ("-dl",             "Emit legacy ASL code only (no C-style operators)");
+    ACPI_OPTION ("-ds <signature(4)>", "Specify a table signature(4) (CDAT table only)");
     ACPI_OPTION ("-e  <f1 f2 ...>", "Include ACPI table(s) for external symbol resolution");
     ACPI_OPTION ("-fe <file>",      "Specify external symbol declaration file");
     ACPI_OPTION ("-in",             "Ignore NoOp opcodes");
diff --git a/sys/contrib/dev/acpica/source/compiler/aslhelpers.y b/sys/contrib/dev/acpica/source/compiler/aslhelpers.y
index abb729c333..cb13d1ebcf 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslhelpers.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslhelpers.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslhex.c b/sys/contrib/dev/acpica/source/compiler/aslhex.c
index 95b364ff22..6ab28ed5f7 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslhex.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslhex.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslkeywords.y b/sys/contrib/dev/acpica/source/compiler/aslkeywords.y
index 54314e6450..7cb670e61b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslkeywords.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslkeywords.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -462,3 +462,14 @@ XferTypeKeyword
     | PARSEOP_XFERTYPE_8_16                 {$$ = TrCreateLeafOp (PARSEOP_XFERTYPE_8_16);}
     | PARSEOP_XFERTYPE_16                   {$$ = TrCreateLeafOp (PARSEOP_XFERTYPE_16);}
     ;
+
+ClockScaleKeyword
+    : PARSEOP_CLOCK_HZ                      {$$ = TrCreateLeafOp (PARSEOP_CLOCK_HZ);}
+    | PARSEOP_CLOCK_KHZ                     {$$ = TrCreateLeafOp (PARSEOP_CLOCK_KHZ);}
+    | PARSEOP_CLOCK_MHZ                     {$$ = TrCreateLeafOp (PARSEOP_CLOCK_MHZ);}
+    ;
+
+ClockModeKeyword
+    : PARSEOP_CLOCK_FIXED                   {$$ = TrCreateLeafOp (PARSEOP_CLOCK_FIXED);}
+    | PARSEOP_CLOCK_VARIABLE                {$$ = TrCreateLeafOp (PARSEOP_CLOCK_VARIABLE);}
+    ;
diff --git a/sys/contrib/dev/acpica/source/compiler/asllength.c b/sys/contrib/dev/acpica/source/compiler/asllength.c
index a2a550949e..305e869c41 100644
--- a/sys/contrib/dev/acpica/source/compiler/asllength.c
+++ b/sys/contrib/dev/acpica/source/compiler/asllength.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asllisting.c b/sys/contrib/dev/acpica/source/compiler/asllisting.c
index 6ed161390c..27800e053f 100644
--- a/sys/contrib/dev/acpica/source/compiler/asllisting.c
+++ b/sys/contrib/dev/acpica/source/compiler/asllisting.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asllistsup.c b/sys/contrib/dev/acpica/source/compiler/asllistsup.c
index 60d3042305..5a6e372f36 100644
--- a/sys/contrib/dev/acpica/source/compiler/asllistsup.c
+++ b/sys/contrib/dev/acpica/source/compiler/asllistsup.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslload.c b/sys/contrib/dev/acpica/source/compiler/aslload.c
index f73135f336..4b969ccbbc 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslload.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslload.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asllookup.c b/sys/contrib/dev/acpica/source/compiler/asllookup.c
index 50f087d705..702a0a1e86 100644
--- a/sys/contrib/dev/acpica/source/compiler/asllookup.c
+++ b/sys/contrib/dev/acpica/source/compiler/asllookup.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmain.c b/sys/contrib/dev/acpica/source/compiler/aslmain.c
index 1df36a2b31..722c2ba3e8 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmain.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -417,7 +417,7 @@ AslSignalHandler (
     }
 
     printf (ASL_PREFIX "Terminating\n");
-    exit (0);
+    _exit (0);
 }
 
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmap.c b/sys/contrib/dev/acpica/source/compiler/aslmap.c
index 7b591bc6e8..cc57f0fb96 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmap.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmap.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -319,6 +319,7 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
 /* DWORDCONST */                OP_TABLE_ENTRY (AML_RAW_DATA_DWORD,         0,                              0,                  ACPI_BTYPE_INTEGER),
 /* DWORDIO */                   OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
 /* DWORDMEMORY */               OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
+/* DWORDPCC */                  OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
 /* DWORDSPACE */                OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* EISAID */                    OP_TABLE_ENTRY (AML_DWORD_OP,               0,                              0,                  ACPI_BTYPE_INTEGER),
 /* ELSE */                      OP_TABLE_ENTRY (AML_ELSE_OP,                0,                              OP_AML_PACKAGE,     0),
@@ -379,8 +380,8 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
 /* LLESSEQUAL */                OP_TABLE_ENTRY (AML_LOGICAL_LESS_EQUAL_OP,  0,                              0,                  ACPI_BTYPE_INTEGER),
 /* LNOT */                      OP_TABLE_ENTRY (AML_LOGICAL_NOT_OP,         0,                              0,                  ACPI_BTYPE_INTEGER),
 /* LNOTEQUAL */                 OP_TABLE_ENTRY (AML_LOGICAL_NOT_EQUAL_OP,   0,                              0,                  ACPI_BTYPE_INTEGER),
-/* LOAD */                      OP_TABLE_ENTRY (AML_LOAD_OP,                0,                              0,                  0),
-/* LOADTABLE */                 OP_TABLE_ENTRY (AML_LOAD_TABLE_OP,          0,                              0,                  ACPI_BTYPE_DDB_HANDLE),
+/* LOAD */                      OP_TABLE_ENTRY (AML_LOAD_OP,                0,                              0,                  ACPI_BTYPE_INTEGER),
+/* LOADTABLE */                 OP_TABLE_ENTRY (AML_LOAD_TABLE_OP,          0,                              0,                  ACPI_BTYPE_INTEGER),
 /* LOCAL0 */                    OP_TABLE_ENTRY (AML_LOCAL0,                 0,                              0,                  ACPI_BTYPE_OBJECTS_AND_REFS),
 /* LOCAL1 */                    OP_TABLE_ENTRY (AML_LOCAL1,                 0,                              0,                  ACPI_BTYPE_OBJECTS_AND_REFS),
 /* LOCAL2 */                    OP_TABLE_ENTRY (AML_LOCAL2,                 0,                              0,                  ACPI_BTYPE_OBJECTS_AND_REFS),
@@ -462,11 +463,18 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
 /* PIN_PULLDEFAULT */           OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* PIN_PULLDOWN */              OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
 /* PIN_PULLUP */                OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
+/* CLOCKINPUT */                OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
+/* CLOCK_HZ */                  OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
+/* CLOCK_KHZ */                 OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
+/* CLOCK_MHZ */                 OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
+/* CLOCK_FIXED */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
+/* CLOCK_VARIABLE */            OP_TABLE_ENTRY (AML_BYTE_OP,                1,                              0,                  0),
 /* POWERRESOURCE */             OP_TABLE_ENTRY (AML_POWER_RESOURCE_OP,      0,                              OP_AML_PACKAGE,     0),
 /* PROCESSOR */                 OP_TABLE_ENTRY (AML_PROCESSOR_OP,           0,                              OP_AML_PACKAGE,     0),
 /* QWORDCONST */                OP_TABLE_ENTRY (AML_RAW_DATA_QWORD,         0,                              0,                  ACPI_BTYPE_INTEGER),
 /* QWORDIO */                   OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* QWORDMEMORY */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
+/* QWORDPCC */                  OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
 /* QWORDSPACE */                OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* RANGE_TYPE_ENTIRE */         OP_TABLE_ENTRY (AML_BYTE_OP,                3,                              0,                  0),
 /* RANGE_TYPE_ISAONLY */        OP_TABLE_ENTRY (AML_BYTE_OP,                2,                              0,                  0),
@@ -554,6 +562,7 @@ const ASL_MAPPING_ENTRY     AslKeywordMapping [] =
 /* WORDBUSNUMBER */             OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* WORDCONST */                 OP_TABLE_ENTRY (AML_RAW_DATA_WORD,          0,                              0,                  ACPI_BTYPE_INTEGER),
 /* WORDIO */                    OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
+/* WORDPCC */                   OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP,         0,                              0,                  0),
 /* WORDSPACE */                 OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* XFERSIZE_8 */                OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
 /* XFERSIZE_16 */               OP_TABLE_ENTRY (AML_BYTE_OP,                0,                              0,                  0),
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmapenter.c b/sys/contrib/dev/acpica/source/compiler/aslmapenter.c
index 7ade1a31db..c6d0a5973d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmapenter.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmapenter.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmapoutput.c b/sys/contrib/dev/acpica/source/compiler/aslmapoutput.c
index 0fe7b1173d..a0337ebca9 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmapoutput.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmapoutput.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmaputils.c b/sys/contrib/dev/acpica/source/compiler/aslmaputils.c
index c376bc0a28..bb0003affd 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmaputils.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmaputils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmessages.c b/sys/contrib/dev/acpica/source/compiler/aslmessages.c
index ca50d2814d..eaabf6cc79 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmessages.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmessages.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -193,7 +193,8 @@ const char              *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
  *
  * NOTE2: With the introduction of the -vw option to disable specific messages,
  * new messages should only be added to the end of this list, so that values
- * for existing messages are not disturbed.
+ * for existing messages are not disturbed. As important, obsolete messages
+ * cannot be removed from this list, as it will affect the -vw option.
  */
 
 /* ASL compiler */
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmessages.h b/sys/contrib/dev/acpica/source/compiler/aslmessages.h
index 0e9fefd4ef..dc0bbe10bd 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmessages.h
+++ b/sys/contrib/dev/acpica/source/compiler/aslmessages.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslmethod.c b/sys/contrib/dev/acpica/source/compiler/aslmethod.c
index 4b3b66a5ab..0e9df4c960 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslmethod.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslmethod.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -546,9 +546,9 @@ MtMethodAnalysisWalkBegin (
         else if (HidExists && AdrExists)
         {
             /*
-             * According to the ACPI spec, "A device object must contain
-             * either an _HID object or an _ADR object, but should not contain
-             * both".
+             * "A device object must contain either an _HID object or
+             * an _ADR object, but must not contain both".
+             * (ACPI spec 6.3, Errata A Section 6.1, page 327)
              */
             AslError (ASL_WARNING, ASL_MSG_MULTIPLE_TYPES, Op,
                 "Device object requires either a _HID or _ADR, but not both");
diff --git a/sys/contrib/dev/acpica/source/compiler/aslnamesp.c b/sys/contrib/dev/acpica/source/compiler/aslnamesp.c
index 6f9bb65a4d..88cfa52387 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslnamesp.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslnamesp.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asloffset.c b/sys/contrib/dev/acpica/source/compiler/asloffset.c
index 5f2661e421..24c778f334 100644
--- a/sys/contrib/dev/acpica/source/compiler/asloffset.c
+++ b/sys/contrib/dev/acpica/source/compiler/asloffset.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslopcodes.c b/sys/contrib/dev/acpica/source/compiler/aslopcodes.c
index 2f2c77446c..250bdd7fc9 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslopcodes.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslopcodes.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asloperands.c b/sys/contrib/dev/acpica/source/compiler/asloperands.c
index ae3b918dff..327aef15dc 100644
--- a/sys/contrib/dev/acpica/source/compiler/asloperands.c
+++ b/sys/contrib/dev/acpica/source/compiler/asloperands.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -429,6 +429,11 @@ OpnDoFieldCommon (
                 Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
                 PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
             }
+#ifdef _OBSOLETE_CODE
+            /*
+             * January 2022: removed this check due to complaints by users
+             * for too many (invalid) remarks.
+             */
             else if (NewBitOffset == CurrentBitOffset)
             {
                 /*
@@ -459,6 +464,7 @@ OpnDoFieldCommon (
                     CurrentBitOffset = NewBitOffset;
                 }
             }
+#endif
             else
             {
                 /*
diff --git a/sys/contrib/dev/acpica/source/compiler/aslopt.c b/sys/contrib/dev/acpica/source/compiler/aslopt.c
index 0246b312a9..2172fe9090 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslopt.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslopt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asloptions.c b/sys/contrib/dev/acpica/source/compiler/asloptions.c
index ab9daa4046..b529538e2e 100644
--- a/sys/contrib/dev/acpica/source/compiler/asloptions.c
+++ b/sys/contrib/dev/acpica/source/compiler/asloptions.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -152,6 +152,7 @@
 #include "aslcompiler.h"
 #include "acapps.h"
 #include "acdisasm.h"
+#include "acglobal.h"
 
 #define _COMPONENT          ACPI_COMPILER
         ACPI_MODULE_NAME    ("asloption")
@@ -176,7 +177,7 @@ AslDoResponseFile (
 
 
 #define ASL_TOKEN_SEPARATORS    " \t\n"
-#define ASL_SUPPORTED_OPTIONS   "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|t|T+G^v^w|x:z"
+#define ASL_SUPPORTED_OPTIONS   "@:a:b|c|d^D:e:f^gh^i|I:l^m:no|p:P^q^r:s|:t|T+G^v^w|x:z"
 
 
 /*******************************************************************************
@@ -270,7 +271,7 @@ AslDoOptions (
     BOOLEAN                 IsResponseFile)
 {
     ACPI_STATUS             Status;
-    UINT32                  j;
+    INT32                  j;
 
 
     /* Get the command line options */
@@ -366,7 +367,6 @@ AslDoOptions (
             {
                 return (-1);
             }
-
             AslGbl_PruneType = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
             break;
 
@@ -445,6 +445,28 @@ AslDoOptions (
             AcpiGbl_CstyleDisassembly = FALSE;
             break;
 
+        case 's':   /* Specify table signature (Only supported for CDAT table) */
+
+            /* Get the required argument */
+
+            if (AcpiGetoptArgument (argc, argv))
+            {
+                return (-1);
+            }
+
+            /* Check for exact string "CDAT" (upper or lower case) */
+
+            AcpiGbl_CDAT = ACPI_CAST_PTR (char, &AcpiGbl_Optarg);
+            if (AcpiUtStricmp (AcpiGbl_Optarg, ACPI_SIG_CDAT))
+            {
+                printf ("\nUnknown table signature: %s\n", AcpiGbl_Optarg);
+                return (-1);
+            }
+
+            AcpiGbl_CDAT = malloc (5);
+            AcpiUtSafeStrncpy ((char *) AcpiGbl_CDAT, ACPI_SIG_CDAT, 5);
+            break;
+
         default:
 
             printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
@@ -608,6 +630,13 @@ AslDoOptions (
             AcpiGbl_DmOpt_Listing = TRUE;
             break;
 
+        case 'd':
+
+            /* Disable deterministic output, enabling timestamp */
+
+            AslGbl_Deterministic = FALSE;
+            break;
+
         case 'i':
 
             /* Produce preprocessor output file */
@@ -837,7 +866,7 @@ AslDoOptions (
             AslGbl_HexOutputFlag = HEX_OUTPUT_C;
             break;
 
-    case 'p': /* data table flex/bison prototype */
+        case 'p': /* data table flex/bison prototype */
 
             AslGbl_DtLexBisonPrototype = TRUE;
             break;
diff --git a/sys/contrib/dev/acpica/source/compiler/aslparseop.c b/sys/contrib/dev/acpica/source/compiler/aslparseop.c
index 92eeb0fb62..e89702aa6b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslparseop.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslparseop.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -790,7 +790,7 @@ TrCreateConstantLeafOp (
 
     DbgPrint (ASL_PARSE_OUTPUT,
         "\nCreateConstantLeafOp  Ln/Col %u/%u NewOp %p  "
-        "Op %s  Value %8.8X%8.8X  \n",
+        "Op %s  Value %8.8X%8.8X\n",
         Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName (ParseOpcode),
         ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer));
 
@@ -817,6 +817,8 @@ TrAllocateOp (
     ACPI_PARSE_OBJECT       *Op;
     ACPI_PARSE_OBJECT       *LatestOp;
 
+    ACPI_FUNCTION_NAME (TrAllocateOp);
+
 
     Op = UtParseOpCacheCalloc ();
 
@@ -861,7 +863,7 @@ TrAllocateOp (
         }
 
         AslGbl_CommentState.LatestParseOp = Op;
-        CvDbgPrint ("TrAllocateOp=Set latest parse op to this op.\n");
+        CvDbgPrint ("%s=Set latest parse op to this op.\n",  ACPI_GET_FUNCTION_NAME);
         CvDbgPrint ("           Op->Asl.ParseOpName = %s\n",
             AslGbl_CommentState.LatestParseOp->Asl.ParseOpName);
         CvDbgPrint ("           Op->Asl.ParseOpcode = 0x%x\n", ParseOpcode);
diff --git a/sys/contrib/dev/acpica/source/compiler/aslparser.y b/sys/contrib/dev/acpica/source/compiler/aslparser.y
index 0a6fb64d62..3ff5eb1a9d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslparser.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslparser.y
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -208,7 +208,7 @@ AslLocalAllocate (
  * These shift/reduce conflicts are expected. There should be zero
  * reduce/reduce conflicts.
  */
-%expect 127
+%expect 134
 
 /*! [Begin] no source code translation */
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslpld.c b/sys/contrib/dev/acpica/source/compiler/aslpld.c
index 0939c5c62d..086db9df2f 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslpld.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslpld.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslpredef.c b/sys/contrib/dev/acpica/source/compiler/aslpredef.c
index aa1a95704d..474fddeca5 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslpredef.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslpredef.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -563,7 +563,7 @@ ApCheckForPredefinedName (
     if (Name[0] == 0)
     {
         AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op,
-            "zero length name found");
+            "Zero length name found");
     }
 
     /* All reserved names are prefixed with a single underscore */
diff --git a/sys/contrib/dev/acpica/source/compiler/aslprepkg.c b/sys/contrib/dev/acpica/source/compiler/aslprepkg.c
index 380c48b01a..49078d2449 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslprepkg.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslprepkg.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslprimaries.y b/sys/contrib/dev/acpica/source/compiler/aslprimaries.y
index dd1310b074..608009d30d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslprimaries.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslprimaries.y
@@ -11,7 +11,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -843,7 +843,7 @@ LoadTerm
     : PARSEOP_LOAD
         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_LOAD);}
         NameString
-        RequiredTarget
+        Target
         PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,2,$4,$5);}
     | PARSEOP_LOAD
         PARSEOP_OPEN_PAREN
diff --git a/sys/contrib/dev/acpica/source/compiler/aslprintf.c b/sys/contrib/dev/acpica/source/compiler/aslprintf.c
index 04f2d31eae..3727c41f28 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslprintf.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslprintf.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -294,7 +294,7 @@ OpcParsePrintf (
         if (StringToProcess)
         {
             NewString = UtLocalCacheCalloc (StringLength + 1);
-            strncpy (NewString, StartPosition, StringLength);
+            memcpy (NewString, StartPosition, StringLength);
 
             NewOp = TrAllocateOp (PARSEOP_STRING_LITERAL);
             NewOp->Asl.Value.String = NewString;
@@ -383,7 +383,7 @@ OpcParsePrintf (
     if (StringToProcess)
     {
         NewString = UtLocalCacheCalloc (StringLength + 1);
-        strncpy (NewString, StartPosition, StringLength);
+        memcpy (NewString, StartPosition, StringLength);
 
         NewOp = TrAllocateOp (PARSEOP_STRING_LITERAL);
         NewOp->Asl.Value.String = NewString;
diff --git a/sys/contrib/dev/acpica/source/compiler/aslprune.c b/sys/contrib/dev/acpica/source/compiler/aslprune.c
index 78b2e34f5c..839ed9415b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslprune.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslprune.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslresource.c b/sys/contrib/dev/acpica/source/compiler/aslresource.c
index a2d855684d..8d0b711d52 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslresource.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslresource.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -762,6 +762,12 @@ RsDoOneResourceDescriptor (
 
     switch (Info->DescriptorTypeOp->Asl.ParseOpcode)
     {
+
+    case PARSEOP_CLOCKINPUT:
+
+        Rnode = RsDoClockInputDescriptor(Info);
+        break;
+
     case PARSEOP_DMA:
 
         Rnode = RsDoDmaDescriptor (Info);
@@ -782,6 +788,11 @@ RsDoOneResourceDescriptor (
         Rnode = RsDoDwordMemoryDescriptor (Info);
         break;
 
+    case PARSEOP_DWORDPCC:
+
+        Rnode = RsDoDwordPccDescriptor (Info);
+        break;
+
     case PARSEOP_DWORDSPACE:
 
         Rnode = RsDoDwordSpaceDescriptor (Info);
@@ -883,6 +894,11 @@ RsDoOneResourceDescriptor (
         Rnode = RsDoQwordMemoryDescriptor (Info);
         break;
 
+    case PARSEOP_QWORDPCC:
+
+        Rnode = RsDoQwordPccDescriptor (Info);
+        break;
+
     case PARSEOP_QWORDSPACE:
 
         Rnode = RsDoQwordSpaceDescriptor (Info);
@@ -957,6 +973,11 @@ RsDoOneResourceDescriptor (
         Rnode = RsDoWordIoDescriptor (Info);
         break;
 
+    case PARSEOP_WORDPCC:
+
+        Rnode = RsDoWordPccDescriptor (Info);
+        break;
+
     case PARSEOP_WORDSPACE:
 
         Rnode = RsDoWordSpaceDescriptor (Info);
diff --git a/sys/contrib/dev/acpica/source/compiler/aslresources.y b/sys/contrib/dev/acpica/source/compiler/aslresources.y
index 86c8981f79..fd8a33d3c0 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslresources.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslresources.y
@@ -11,7 +11,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -194,6 +194,7 @@ ResourceMacroTerm
     | DMATerm                       {}
     | DWordIOTerm                   {}
     | DWordMemoryTerm               {}
+    | DWordPccTerm                  {}
     | DWordSpaceTerm                {}
     | EndDependentFnTerm            {}
     | ExtendedIOTerm                {}
@@ -214,11 +215,13 @@ ResourceMacroTerm
     | Memory32Term                  {}
     | PinConfigTerm                 {}
     | PinFunctionTerm               {}
+    | ClockInputTerm                {}
     | PinGroupTerm                  {}
     | PinGroupConfigTerm            {}
     | PinGroupFunctionTerm          {}
     | QWordIOTerm                   {}
     | QWordMemoryTerm               {}
+    | QWordPccTerm                  {}
     | QWordSpaceTerm                {}
     | RegisterTerm                  {}
     | SpiSerialBusTerm              {}
@@ -231,6 +234,7 @@ ResourceMacroTerm
     | VendorShortTerm               {}
     | WordBusNumberTerm             {}
     | WordIOTerm                    {}
+    | WordPccTerm                   {}
     | WordSpaceTerm                 {}
     ;
 
@@ -316,6 +320,20 @@ DWordMemoryTerm
         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     ;
 
+DWordPccTerm
+    : PARSEOP_DWORDPCC
+        PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
+        ByteConstExpr
+        OptionalByteConstExpr
+        OptionalStringData
+        OptionalNameString_Last
+        PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
+                                                        $4,$5,$6,$7);}
+    | PARSEOP_DWORDPCC
+        PARSEOP_OPEN_PAREN
+        error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
+    ;
+
 DWordSpaceTerm
     : PARSEOP_DWORDSPACE
         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
@@ -666,6 +684,21 @@ PinFunctionTerm
         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     ;
 
+ClockInputTerm
+    : PARSEOP_CLOCKINPUT
+        PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_CLOCKINPUT);}
+        DWordConstExpr              /* 04: FrequencyNumerator */
+        ',' WordConstExpr           /* 06: FrequencyDivisor */
+        ',' ClockScaleKeyword       /* 08: Scale */
+        ',' ClockModeKeyword        /* 10: Mode*/
+        OptionalStringData          /* 11: ResourceSource */
+        OptionalByteConstExpr       /* 12: ResourceSourceIndex */
+        PARSEOP_CLOSE_PAREN         {$$ = TrLinkOpChildren ($<n>3,6,$4,$6,$8,$10,$11,$12);}
+    | PARSEOP_CLOCKINPUT
+        PARSEOP_OPEN_PAREN
+        error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
+    ;
+
 PinGroupTerm
     : PARSEOP_PINGROUP
         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_PINGROUP);}
@@ -768,6 +801,20 @@ QWordMemoryTerm
         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     ;
 
+QWordPccTerm
+    : PARSEOP_QWORDPCC
+        PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
+        ByteConstExpr
+        OptionalByteConstExpr
+        OptionalStringData
+        OptionalNameString_Last
+        PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
+                                                        $4,$5,$6,$7);}
+    | PARSEOP_QWORDPCC
+        PARSEOP_OPEN_PAREN
+        error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
+    ;
+
 QWordSpaceTerm
     : PARSEOP_QWORDSPACE
         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
@@ -996,6 +1043,20 @@ WordIOTerm
         error PARSEOP_CLOSE_PAREN   {$$ = AslDoError(); yyclearin;}
     ;
 
+WordPccTerm
+    : PARSEOP_WORDPCC
+        PARSEOP_OPEN_PAREN           {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
+        ByteConstExpr
+        OptionalByteConstExpr
+        OptionalStringData
+        OptionalNameString_Last
+        PARSEOP_CLOSE_PAREN                         {$$ = TrLinkOpChildren ($<n>3,4,
+                                                        $4,$5,$6,$7);}
+    | PARSEOP_WORDPCC
+        PARSEOP_OPEN_PAREN
+        error PARSEOP_CLOSE_PAREN                   {$$ = AslDoError(); yyclearin;}
+    ;
+
 WordSpaceTerm
     : PARSEOP_WORDSPACE
         PARSEOP_OPEN_PAREN          {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype1.c b/sys/contrib/dev/acpica/source/compiler/aslrestype1.c
index 6751444a2a..c5eb17948f 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype1.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype1.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype1i.c b/sys/contrib/dev/acpica/source/compiler/aslrestype1i.c
index c880a74002..ca8b76af40 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype1i.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype1i.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2.c
index 4c308aaacf..2886c0328c 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2d.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2d.c
index c1cafe207d..f16f53f3b1 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2d.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2d.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -158,11 +158,168 @@
 /*
  * This module contains the Dword (32-bit) address space descriptors:
  *
+ * DWordPcc
  * DwordIO
  * DwordMemory
  * DwordSpace
  */
 
+
+/*******************************************************************************
+ *
+ * FUNCTION:    RsDoDwordPccDescriptor
+ *
+ * PARAMETERS:  Info                - Parse Op and resource template offset
+ *
+ * RETURN:      Completed resource node
+ *
+ * DESCRIPTION: Construct a long "DWordPcc" descriptor
+ *
+ ******************************************************************************/
+
+ASL_RESOURCE_NODE *
+RsDoDwordPccDescriptor (
+    ASL_RESOURCE_INFO       *Info)
+{
+    AML_RESOURCE            *Descriptor;
+    ACPI_PARSE_OBJECT       *InitializerOp;
+    ACPI_PARSE_OBJECT       *MinOp = NULL;
+    ACPI_PARSE_OBJECT       *MaxOp = NULL;
+    ACPI_PARSE_OBJECT       *LengthOp = NULL;
+    ACPI_PARSE_OBJECT       *GranOp = NULL;
+    ASL_RESOURCE_NODE       *Rnode;
+    UINT16                  StringLength = 0;
+    UINT32                  OptionIndex = 0;
+    UINT8                   *OptionalFields;
+    UINT32                  i;
+    BOOLEAN                 ResSourceIndex = FALSE;
+
+
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    StringLength = RsGetStringDataLength (InitializerOp);
+
+    Rnode = RsAllocateResourceNode (
+        sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
+
+    Descriptor = Rnode->Buffer;
+    Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
+    Descriptor->Address32.ResourceType  = ACPI_ADDRESS_TYPE_PCC_NUMBER;
+
+    /*
+     * Initial descriptor length -- may be enlarged if there are
+     * optional fields present
+     */
+    OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+    Descriptor->Address32.ResourceLength = (UINT16)
+        (sizeof (AML_RESOURCE_ADDRESS32) -
+         sizeof (AML_RESOURCE_LARGE_HEADER));
+
+
+    /*
+    * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
+    * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
+    * Bit [1] Decode Type, _DEC: 0 (do not care)
+    * BIT [0] Ignored (must be zero)
+    */
+    Descriptor->Address32.Flags = 0b1100;
+
+    // No type specific flags. Set to 0.
+    Descriptor->Address32.SpecificFlags = 0;
+
+    // must be set to zero if _MAX == _MIN.
+    Descriptor->Address32.Granularity = 0x0;
+    /* Process all child initialization nodes */
+
+    // No translation offset.
+    Descriptor->Address32.TranslationOffset = 0;
+
+    // Pcc is unique address.
+    Descriptor->Address32.AddressLength = 1;
+
+    for (i = 0; InitializerOp; i++)
+    {
+        switch (i)
+        {
+
+        case 0: /* Address Min = Max */
+
+            Descriptor->Address32.Minimum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+            Descriptor->Address32.Maximum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+
+            break;
+
+        case 1: /* ResSourceIndex [Optional Field - BYTE] */
+
+            if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
+            {
+                /* Found a valid ResourceSourceIndex */
+
+                OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                OptionIndex++;
+                Descriptor->Address32.ResourceLength++;
+                ResSourceIndex = TRUE;
+            }
+            break;
+
+        case 2: /* ResSource [Optional Field - STRING] */
+
+            if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
+                (InitializerOp->Asl.Value.String))
+            {
+                if (StringLength)
+                {
+                    /* Found a valid ResourceSource */
+
+                    Descriptor->Address32.ResourceLength = (UINT16)
+                        (Descriptor->Address32.ResourceLength + StringLength);
+
+                    strcpy ((char *)
+                        &OptionalFields[OptionIndex],
+                        InitializerOp->Asl.Value.String);
+
+                    /* ResourceSourceIndex must also be valid */
+
+                    if (!ResSourceIndex)
+                    {
+                        AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
+                            InitializerOp, NULL);
+                    }
+                }
+            }
+
+            break;
+
+        case 3: // DescriptorName
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
+            break;
+
+        default:
+
+            AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
+            break;
+        }
+
+        InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+    }
+
+    /* Validate the Min/Max/Len/Gran values */
+
+    RsLargeAddressCheck (
+        (UINT64) Descriptor->Address32.Minimum,
+        (UINT64) Descriptor->Address32.Maximum,
+        (UINT64) Descriptor->Address32.AddressLength,
+        (UINT64) Descriptor->Address32.Granularity,
+        Descriptor->Address32.Flags,
+        MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
+    Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+        OptionIndex + StringLength;
+    return (Rnode);
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    RsDoDwordIoDescriptor
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2e.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2e.c
index 63db785270..0ad2ac49c5 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2e.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2e.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2q.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2q.c
index ec64da2b36..33a66c1e8b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2q.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2q.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -160,6 +160,7 @@
  *
  * QWordIO
  * QWordMemory
+ * QwordPcc
  * QWordSpace
  */
 
@@ -613,6 +614,161 @@ RsDoQwordMemoryDescriptor (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    RsDoQwordPccDescriptor
+ *
+ * PARAMETERS:  Info                - Parse Op and resource template offset
+ *
+ * RETURN:      Completed resource node
+ *
+ * DESCRIPTION: Construct a long "QWordPcc" descriptor
+ *
+ ******************************************************************************/
+
+ASL_RESOURCE_NODE *
+RsDoQwordPccDescriptor (
+    ASL_RESOURCE_INFO       *Info)
+{
+    AML_RESOURCE            *Descriptor;
+    ACPI_PARSE_OBJECT       *InitializerOp;
+    ACPI_PARSE_OBJECT       *MinOp = NULL;
+    ACPI_PARSE_OBJECT       *MaxOp = NULL;
+    ACPI_PARSE_OBJECT       *LengthOp = NULL;
+    ACPI_PARSE_OBJECT       *GranOp = NULL;
+    ASL_RESOURCE_NODE       *Rnode;
+    UINT16                  StringLength = 0;
+    UINT32                  OptionIndex = 0;
+    UINT8                   *OptionalFields;
+    UINT32                  i;
+    BOOLEAN                 ResSourceIndex = FALSE;
+
+
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    StringLength = RsGetStringDataLength (InitializerOp);
+
+    Rnode = RsAllocateResourceNode (
+        sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
+
+    Descriptor = Rnode->Buffer;
+    Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
+    Descriptor->Address32.ResourceType  = ACPI_ADDRESS_TYPE_PCC_NUMBER;
+
+    /*
+     * Initial descriptor length -- may be enlarged if there are
+     * optional fields present
+     */
+    OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+    Descriptor->Address32.ResourceLength = (UINT16)
+        (sizeof (AML_RESOURCE_ADDRESS32) -
+         sizeof (AML_RESOURCE_LARGE_HEADER));
+
+
+    /*
+    * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
+    * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
+    * Bit [1] Decode Type, _DEC: 0 (do not care)
+    * BIT [0] Ignored (must be zero)
+    */
+    Descriptor->Address32.Flags = 0b1100;
+
+    // No type specific flags. Set to 0.
+    Descriptor->Address32.SpecificFlags = 0;
+
+    // must be set to zero if _MAX == _MIN.
+    Descriptor->Address32.Granularity = 0x0;
+    /* Process all child initialization nodes */
+
+    // No translation offset.
+    Descriptor->Address32.TranslationOffset = 0;
+
+    // Pcc is unique address.
+    Descriptor->Address32.AddressLength = 1;
+
+    for (i = 0; InitializerOp; i++)
+    {
+        switch (i)
+        {
+
+        case 0: /* Address Min = Max */
+
+            Descriptor->Address32.Minimum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+            Descriptor->Address32.Maximum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+
+            break;
+
+        case 1: /* ResSourceIndex [Optional Field - BYTE] */
+
+            if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
+            {
+                /* Found a valid ResourceSourceIndex */
+
+                OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                OptionIndex++;
+                Descriptor->Address32.ResourceLength++;
+                ResSourceIndex = TRUE;
+            }
+            break;
+
+        case 2: /* ResSource [Optional Field - STRING] */
+
+            if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
+                (InitializerOp->Asl.Value.String))
+            {
+                if (StringLength)
+                {
+                    /* Found a valid ResourceSource */
+
+                    Descriptor->Address32.ResourceLength = (UINT16)
+                        (Descriptor->Address32.ResourceLength + StringLength);
+
+                    strcpy ((char *)
+                        &OptionalFields[OptionIndex],
+                        InitializerOp->Asl.Value.String);
+
+                    /* ResourceSourceIndex must also be valid */
+
+                    if (!ResSourceIndex)
+                    {
+                        AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
+                            InitializerOp, NULL);
+                    }
+                }
+            }
+
+            break;
+
+        case 3: // DescriptorName
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
+            break;
+
+        default:
+
+            AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
+            break;
+        }
+
+        InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+    }
+
+    /* Validate the Min/Max/Len/Gran values */
+
+    RsLargeAddressCheck (
+        (UINT64) Descriptor->Address32.Minimum,
+        (UINT64) Descriptor->Address32.Maximum,
+        (UINT64) Descriptor->Address32.AddressLength,
+        (UINT64) Descriptor->Address32.Granularity,
+        Descriptor->Address32.Flags,
+        MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
+    Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+        OptionIndex + StringLength;
+    return (Rnode);
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    RsDoQwordSpaceDescriptor
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2s.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2s.c
index 607aca8be3..f7d895575b 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2s.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2s.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -1469,7 +1469,7 @@ RsDoCsi2SerialBusDescriptor (
 
         case 2: /* Local Port Instance [Integer] (_PRT) */
 
-            RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 0, 0);
+            RsSetFlagBits16 ((UINT16 *) &Descriptor->Csi2SerialBus.TypeSpecificFlags, InitializerOp, 2, 0);
             RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LOCALPORT,
                 CurrentByteOffset + ASL_RESDESC_OFFSET (Csi2SerialBus.TypeSpecificFlags), 2, 6);
             break;
@@ -1550,7 +1550,6 @@ RsDoPinFunctionDescriptor (
     UINT16                  PinListLength;
     UINT16                  DescriptorSize;
     UINT32                  CurrentByteOffset;
-    UINT32                  PinCount = 0;
     UINT32                  i;
 
     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
@@ -1668,15 +1667,10 @@ RsDoPinFunctionDescriptor (
         default:
             /*
              * PINs come through here, repeatedly. Each PIN must be a WORD.
-             * NOTE: there is no "length" field for this, so from ACPI spec:
-             *  The number of pins in the table can be calculated from:
-             *  PinCount = (Resource Source Name Offset - Pin Table Offset) / 2
-             *  (implies resource source must immediately follow the pin list.)
              *  Name: _PIN
              */
             *PinList = (UINT16) InitializerOp->Asl.Value.Integer;
             PinList++;
-            PinCount++;
 
             /* Case 8: First pin number in list */
 
@@ -1708,6 +1702,115 @@ RsDoPinFunctionDescriptor (
     return (Rnode);
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    RsDoClockInputDescriptor
+ *
+ * PARAMETERS:  Info                - Parse Op and resource template offset
+ *
+ * RETURN:      Completed resource node
+ *
+ * DESCRIPTION: Construct a long "ClockInput" descriptor
+ *
+ ******************************************************************************/
+
+ASL_RESOURCE_NODE *
+RsDoClockInputDescriptor (
+    ASL_RESOURCE_INFO       *Info)
+{
+    AML_RESOURCE            *Descriptor;
+    ACPI_PARSE_OBJECT       *InitializerOp;
+    ASL_RESOURCE_NODE       *Rnode;
+    char                    *ResourceSourceString = NULL;
+    UINT8                   *ResourceSourceIndex = NULL;
+    UINT16                  ResSourceLength;
+    UINT16                  DescriptorSize;
+    UINT32                  i;
+    UINT32                  CurrentByteOffset;
+
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    CurrentByteOffset = Info->CurrentByteOffset;
+
+    /*
+     * Calculate lengths for fields that have variable length:
+     * 1) Resource Source string
+     */
+    ResSourceLength = RsGetStringDataLength (InitializerOp);
+
+    DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_CLOCK_INPUT) + ResSourceLength + 1;
+
+    /* Allocate the local resource node and initialize */
+
+    Rnode = RsAllocateResourceNode (DescriptorSize +
+        sizeof (AML_RESOURCE_LARGE_HEADER));
+
+    Descriptor = Rnode->Buffer;
+    Descriptor->ClockInput.ResourceLength = DescriptorSize;
+    Descriptor->ClockInput.DescriptorType = ACPI_RESOURCE_NAME_CLOCK_INPUT;
+    Descriptor->ClockInput.RevisionId = AML_RESOURCE_CLOCK_INPUT_REVISION;
+
+    /* Build pointers to optional areas */
+
+    if (ResSourceLength){
+        ResourceSourceIndex = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_CLOCK_INPUT));
+        ResourceSourceString = ACPI_ADD_PTR (char, Descriptor, sizeof (AML_RESOURCE_CLOCK_INPUT) + 1);
+    }
+
+    /* Process all child initialization nodes */
+
+    for (i = 0; InitializerOp; i++)
+    {
+        switch (i)
+        {
+        case 0:
+            Descriptor->ClockInput.FrequencyNumerator = (UINT32)InitializerOp->Asl.Value.Integer;
+            RsCreateDwordField (InitializerOp, ACPI_RESTAG_FQN,
+                CurrentByteOffset + ASL_RESDESC_OFFSET (ClockInput.FrequencyNumerator));
+
+            break;
+
+        case 1:
+            Descriptor->ClockInput.FrequencyDivisor = (UINT16)InitializerOp->Asl.Value.Integer;
+            RsCreateWordField (InitializerOp, ACPI_RESTAG_FQD,
+                CurrentByteOffset + ASL_RESDESC_OFFSET (ClockInput.FrequencyDivisor));
+
+            break;
+
+        case 2:
+            RsSetFlagBits16 (&Descriptor->ClockInput.Flags, InitializerOp, 1, 0);
+            break;
+
+        case 3:
+            RsSetFlagBits16 (&Descriptor->ClockInput.Flags, InitializerOp, 0, 0);
+            break;
+
+        case 4: /* ResSource String [Optional Field] */
+
+            if (ResourceSourceString)
+            {
+                /* Copy string to the descriptor */
+
+                strcpy (ResourceSourceString, InitializerOp->Asl.Value.String);
+            }
+            break;
+
+        case 5: /* ResSource Index [Optional Field] */
+            if (ResourceSourceIndex)
+            {
+                *ResourceSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer;
+            }
+            break;
+
+        default:
+            break;
+        }
+
+        InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+    }
+
+    return (Rnode);
+}
+
 
 /*******************************************************************************
  *
@@ -1736,7 +1839,6 @@ RsDoPinConfigDescriptor (
     UINT16                  PinListLength;
     UINT16                  DescriptorSize;
     UINT32                  CurrentByteOffset;
-    UINT32                  PinCount = 0;
     UINT32                  i;
 
     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
@@ -1868,15 +1970,10 @@ RsDoPinConfigDescriptor (
         default:
             /*
              * PINs come through here, repeatedly. Each PIN must be a WORD.
-             * NOTE: there is no "length" field for this, so from ACPI spec:
-             *  The number of pins in the table can be calculated from:
-             *  PinCount = (Resource Source Name Offset - Pin Table Offset) / 2
-             *  (implies resource source must immediately follow the pin list.)
              *  Name: _PIN
              */
             *PinList = (UINT16) InitializerOp->Asl.Value.Integer;
             PinList++;
-            PinCount++;
 
             /* Case 8: First pin number in list */
 
@@ -1936,7 +2033,6 @@ RsDoPinGroupDescriptor (
     UINT16                  PinListLength;
     UINT16                  DescriptorSize;
     UINT32                  CurrentByteOffset;
-    UINT32                  PinCount = 0;
     UINT32                  i;
 
     InitializerOp = Info->DescriptorTypeOp->Asl.Child;
@@ -2022,15 +2118,10 @@ RsDoPinGroupDescriptor (
         default:
             /*
              * PINs come through here, repeatedly. Each PIN must be a WORD.
-             * NOTE: there is no "length" field for this, so from ACPI spec:
-             *  The number of pins in the table can be calculated from:
-             *  PinCount = (Resource Source Name Offset - Pin Table Offset) / 2
-             *  (implies resource source must immediately follow the pin list.)
              *  Name: _PIN
              */
             *PinList = (UINT16) InitializerOp->Asl.Value.Integer;
             PinList++;
-            PinCount++;
 
             /* Case 3: First pin number in list */
 
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrestype2w.c b/sys/contrib/dev/acpica/source/compiler/aslrestype2w.c
index 3c3fed7b06..0d95d6628d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrestype2w.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslrestype2w.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -160,6 +160,7 @@
  *
  * WordIO
  * WordMemory
+ * WordPcc
  * WordSpace
  */
 
@@ -589,6 +590,161 @@ RsDoWordBusNumberDescriptor (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    RsDoWordPccDescriptor
+ *
+ * PARAMETERS:  Info                - Parse Op and resource template offset
+ *
+ * RETURN:      Completed resource node
+ *
+ * DESCRIPTION: Construct a long "WordPcc" descriptor
+ *
+ ******************************************************************************/
+
+ASL_RESOURCE_NODE *
+RsDoWordPccDescriptor (
+    ASL_RESOURCE_INFO       *Info)
+{
+    AML_RESOURCE            *Descriptor;
+    ACPI_PARSE_OBJECT       *InitializerOp;
+    ACPI_PARSE_OBJECT       *MinOp = NULL;
+    ACPI_PARSE_OBJECT       *MaxOp = NULL;
+    ACPI_PARSE_OBJECT       *LengthOp = NULL;
+    ACPI_PARSE_OBJECT       *GranOp = NULL;
+    ASL_RESOURCE_NODE       *Rnode;
+    UINT16                  StringLength = 0;
+    UINT32                  OptionIndex = 0;
+    UINT8                   *OptionalFields;
+    UINT32                  i;
+    BOOLEAN                 ResSourceIndex = FALSE;
+
+
+    InitializerOp = Info->DescriptorTypeOp->Asl.Child;
+    StringLength = RsGetStringDataLength (InitializerOp);
+
+    Rnode = RsAllocateResourceNode (
+        sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
+
+    Descriptor = Rnode->Buffer;
+    Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
+    Descriptor->Address32.ResourceType  = ACPI_ADDRESS_TYPE_PCC_NUMBER;
+
+    /*
+     * Initial descriptor length -- may be enlarged if there are
+     * optional fields present
+     */
+    OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
+    Descriptor->Address32.ResourceLength = (UINT16)
+        (sizeof (AML_RESOURCE_ADDRESS32) -
+         sizeof (AML_RESOURCE_LARGE_HEADER));
+
+
+    /*
+    * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
+    * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
+    * Bit [1] Decode Type, _DEC: 0 (do not care)
+    * BIT [0] Ignored (must be zero)
+    */
+    Descriptor->Address32.Flags = 0b1100;
+
+    // No type specific flags. Set to 0.
+    Descriptor->Address32.SpecificFlags = 0;
+
+    // must be set to zero if _MAX == _MIN.
+    Descriptor->Address32.Granularity = 0x0;
+    /* Process all child initialization nodes */
+
+    // No translation offset.
+    Descriptor->Address32.TranslationOffset = 0;
+
+    // Pcc is unique address.
+    Descriptor->Address32.AddressLength = 1;
+
+    for (i = 0; InitializerOp; i++)
+    {
+        switch (i)
+        {
+
+        case 0: /* Address Min = Max */
+
+            Descriptor->Address32.Minimum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+            Descriptor->Address32.Maximum =
+                (UINT32) InitializerOp->Asl.Value.Integer;
+
+            break;
+
+        case 1: /* ResSourceIndex [Optional Field - BYTE] */
+
+            if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
+            {
+                /* Found a valid ResourceSourceIndex */
+
+                OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
+                OptionIndex++;
+                Descriptor->Address32.ResourceLength++;
+                ResSourceIndex = TRUE;
+            }
+            break;
+
+        case 2: /* ResSource [Optional Field - STRING] */
+
+            if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
+                (InitializerOp->Asl.Value.String))
+            {
+                if (StringLength)
+                {
+                    /* Found a valid ResourceSource */
+
+                    Descriptor->Address32.ResourceLength = (UINT16)
+                        (Descriptor->Address32.ResourceLength + StringLength);
+
+                    strcpy ((char *)
+                        &OptionalFields[OptionIndex],
+                        InitializerOp->Asl.Value.String);
+
+                    /* ResourceSourceIndex must also be valid */
+
+                    if (!ResSourceIndex)
+                    {
+                        AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
+                            InitializerOp, NULL);
+                    }
+                }
+            }
+
+            break;
+
+        case 3: // DescriptorName
+            UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
+            break;
+
+        default:
+
+            AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
+            break;
+        }
+
+        InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
+    }
+
+    /* Validate the Min/Max/Len/Gran values */
+
+    RsLargeAddressCheck (
+        (UINT64) Descriptor->Address32.Minimum,
+        (UINT64) Descriptor->Address32.Maximum,
+        (UINT64) Descriptor->Address32.AddressLength,
+        (UINT64) Descriptor->Address32.Granularity,
+        Descriptor->Address32.Flags,
+        MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
+
+    Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
+        OptionIndex + StringLength;
+    return (Rnode);
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    RsDoWordSpaceDescriptor
diff --git a/sys/contrib/dev/acpica/source/compiler/aslrules.y b/sys/contrib/dev/acpica/source/compiler/aslrules.y
index a944308e39..c96d4cc75d 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslrules.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslrules.y
@@ -11,7 +11,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -261,11 +261,11 @@ Target
     | ','                           {$$ = TrCreateNullTargetOp ();} /* Placeholder is a ZeroOp object */
     | ',' SuperName                 {$$ = TrSetOpFlags ($2, OP_IS_TARGET);}
     ;
-
+/*
 RequiredTarget
     : ',' SuperName                 {$$ = TrSetOpFlags ($2, OP_IS_TARGET);}
     ;
-
+*/
 TermArg
     : SimpleName                    {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
     | Type2Opcode                   {$$ = TrSetOpFlags ($1, OP_IS_TERM_ARG);}
@@ -715,7 +715,6 @@ Type1Opcode
     | FatalTerm                     {}
     | ForTerm                       {}
     | ElseIfTerm                    {}
-    | LoadTerm                      {}
     | NoOpTerm                      {}
     | NotifyTerm                    {}
     | ReleaseTerm                   {}
@@ -734,6 +733,7 @@ Type2Opcode
     | CondRefOfTerm                 {}
     | CopyObjectTerm                {}
     | DerefOfTerm                   {}
+    | LoadTerm                      {} /* Moved from Type1 -- now returns an integer (ACPI 6.4) */
     | ObjectTypeTerm                {}
     | RefOfTerm                     {}
     | SizeOfTerm                    {}
diff --git a/sys/contrib/dev/acpica/source/compiler/aslstartup.c b/sys/contrib/dev/acpica/source/compiler/aslstartup.c
index 3954388c04..104f9793be 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslstartup.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslstartup.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -317,7 +317,7 @@ AslDetectSourceFileType (
     else
     {
         fprintf (stderr,
-            "Binary file does not contain a valid ACPI table\n");
+            "Binary file does not contain a valid standard ACPI table\n");
     }
 
     Type = ASL_INPUT_TYPE_BINARY;
diff --git a/sys/contrib/dev/acpica/source/compiler/aslstubs.c b/sys/contrib/dev/acpica/source/compiler/aslstubs.c
index be3337ab8a..d361986078 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslstubs.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslstubs.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslsupport.l b/sys/contrib/dev/acpica/source/compiler/aslsupport.l
index a507e99b33..74ac78d8c4 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslsupport.l
+++ b/sys/contrib/dev/acpica/source/compiler/aslsupport.l
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -195,7 +195,7 @@ AslParserCleanup (
  *
  * DESCRIPTION: Handle #line directives emitted by the preprocessor.
  *
- * The #line directive is emitted by the preprocesser, and is used to
+ * The #line directive is emitted by the preprocessor, and is used to
  * pass through line numbers from the original source code file to the
  * preprocessor output file (.i). This allows any compiler-generated
  * error messages to be displayed with the correct line number.
diff --git a/sys/contrib/dev/acpica/source/compiler/aslsupport.y b/sys/contrib/dev/acpica/source/compiler/aslsupport.y
index dfc427a9d7..3bd09a55e7 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslsupport.y
+++ b/sys/contrib/dev/acpica/source/compiler/aslsupport.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asltokens.y b/sys/contrib/dev/acpica/source/compiler/asltokens.y
index 5e205e01de..50d6031e5e 100644
--- a/sys/contrib/dev/acpica/source/compiler/asltokens.y
+++ b/sys/contrib/dev/acpica/source/compiler/asltokens.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -256,6 +256,7 @@ NoEcho('
 %token <i> PARSEOP_DWORDCONST
 %token <i> PARSEOP_DWORDIO
 %token <i> PARSEOP_DWORDMEMORY
+%token <i> PARSEOP_DWORDPCC
 %token <i> PARSEOP_DWORDSPACE
 %token <i> PARSEOP_EISAID
 %token <i> PARSEOP_ELSE
@@ -399,11 +400,18 @@ NoEcho('
 %token <i> PARSEOP_PIN_PULLDEFAULT
 %token <i> PARSEOP_PIN_PULLDOWN
 %token <i> PARSEOP_PIN_PULLUP
+%token <i> PARSEOP_CLOCKINPUT
+%token <i> PARSEOP_CLOCK_HZ
+%token <i> PARSEOP_CLOCK_KHZ
+%token <i> PARSEOP_CLOCK_MHZ
+%token <i> PARSEOP_CLOCK_FIXED
+%token <i> PARSEOP_CLOCK_VARIABLE
 %token <i> PARSEOP_POWERRESOURCE
 %token <i> PARSEOP_PROCESSOR
 %token <i> PARSEOP_QWORDCONST
 %token <i> PARSEOP_QWORDIO
 %token <i> PARSEOP_QWORDMEMORY
+%token <i> PARSEOP_QWORDPCC
 %token <i> PARSEOP_QWORDSPACE
 %token <i> PARSEOP_RANGETYPE_ENTIRE
 %token <i> PARSEOP_RANGETYPE_ISAONLY
@@ -491,6 +499,7 @@ NoEcho('
 %token <i> PARSEOP_WORDBUSNUMBER
 %token <i> PARSEOP_WORDCONST
 %token <i> PARSEOP_WORDIO
+%token <i> PARSEOP_WORDPCC
 %token <i> PARSEOP_WORDSPACE
 %token <i> PARSEOP_XFERSIZE_8
 %token <i> PARSEOP_XFERSIZE_16
diff --git a/sys/contrib/dev/acpica/source/compiler/asltransform.c b/sys/contrib/dev/acpica/source/compiler/asltransform.c
index 91655420fe..0a29287176 100644
--- a/sys/contrib/dev/acpica/source/compiler/asltransform.c
+++ b/sys/contrib/dev/acpica/source/compiler/asltransform.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/asltree.c b/sys/contrib/dev/acpica/source/compiler/asltree.c
index 91db420f94..83a95be079 100644
--- a/sys/contrib/dev/acpica/source/compiler/asltree.c
+++ b/sys/contrib/dev/acpica/source/compiler/asltree.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -467,6 +467,7 @@ TrLinkOpChildren (
     UINT32                  i;
     BOOLEAN                 FirstChild;
 
+    ACPI_FUNCTION_NAME (TrLinkOpChildren);
 
     va_start (ap, NumChildren);
 
@@ -624,7 +625,7 @@ TrLinkOpChildren (
     if (AcpiGbl_CaptureComments)
     {
         AslGbl_CommentState.LatestParseOp = Op;
-        CvDbgPrint ("TrLinkOpChildren=====Set latest parse op to this op.\n");
+        CvDbgPrint ("%s=====Set latest parse op to this op.\n",  ACPI_GET_FUNCTION_NAME);
     }
 
     return (Op);
diff --git a/sys/contrib/dev/acpica/source/compiler/asltypes.h b/sys/contrib/dev/acpica/source/compiler/asltypes.h
index 760995f59f..50234d71f0 100644
--- a/sys/contrib/dev/acpica/source/compiler/asltypes.h
+++ b/sys/contrib/dev/acpica/source/compiler/asltypes.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -336,7 +336,7 @@ typedef struct asl_file_desc
 typedef struct asl_cache_info
 {
     void                    *Next;
-    char                    Buffer[1];
+    char                    Buffer[];
 
 } ASL_CACHE_INFO;
 
diff --git a/sys/contrib/dev/acpica/source/compiler/asltypes.y b/sys/contrib/dev/acpica/source/compiler/asltypes.y
index aaa732f4dc..2c26695595 100644
--- a/sys/contrib/dev/acpica/source/compiler/asltypes.y
+++ b/sys/contrib/dev/acpica/source/compiler/asltypes.y
@@ -9,7 +9,7 @@ NoEcho('
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -175,7 +175,9 @@ NoEcho('
 %type <n> ParameterTypePackageList
 %type <n> ParameterTypesPackage
 %type <n> ParameterTypesPackageList
+/*
 %type <n> RequiredTarget
+*/
 %type <n> SimpleName
 %type <n> StringData
 %type <n> StringLiteral
@@ -357,6 +359,8 @@ NoEcho('
 %type <n> WireModeKeyword
 %type <n> XferSizeKeyword
 %type <n> XferTypeKeyword
+%type <n> ClockScaleKeyword
+%type <n> ClockModeKeyword
 
 /* Types */
 
@@ -409,11 +413,13 @@ NoEcho('
 
 /* Resource Descriptors */
 
+%type <n> ClockInputTerm
 %type <n> ConnectionTerm
 %type <n> Csi2SerialBusTerm
 %type <n> DMATerm
 %type <n> DWordIOTerm
 %type <n> DWordMemoryTerm
+%type <n> DWordPccTerm
 %type <n> DWordSpaceTerm
 %type <n> EndDependentFnTerm
 %type <n> ExtendedIOTerm
@@ -441,6 +447,7 @@ NoEcho('
 %type <n> PinGroupFunctionTerm
 %type <n> QWordIOTerm
 %type <n> QWordMemoryTerm
+%type <n> QWordPccTerm
 %type <n> QWordSpaceTerm
 %type <n> RegisterTerm
 %type <n> SpiSerialBusTerm
@@ -453,6 +460,7 @@ NoEcho('
 %type <n> VendorShortTerm
 %type <n> WordBusNumberTerm
 %type <n> WordIOTerm
+%type <n> WordPccTerm
 %type <n> WordSpaceTerm
 
 /* Local types that help construct the AML, not in ACPI spec */
diff --git a/sys/contrib/dev/acpica/source/compiler/aslutils.c b/sys/contrib/dev/acpica/source/compiler/aslutils.c
index c4325c3b25..6c7e472ab2 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslutils.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -610,7 +610,7 @@ UtSetParseOpName (
  *
  * FUNCTION:    UtDisplayOneSummary
  *
- * PARAMETERS:  FileID              - ID of outpout file
+ * PARAMETERS:  FileID              - ID of output file
  *
  * RETURN:      None
  *
@@ -733,7 +733,7 @@ UtDisplayOneSummary (
  *
  * FUNCTION:    UtDisplayErrorSummary
  *
- * PARAMETERS:  FileID              - ID of outpout file
+ * PARAMETERS:  FileID              - ID of output file
  *
  * RETURN:      None
  *
@@ -800,7 +800,7 @@ UtDisplayErrorSummary (
  *
  * FUNCTION:    UtDisplaySummary
  *
- * PARAMETERS:  FileID              - ID of outpout file
+ * PARAMETERS:  FileID              - ID of output file
  *
  * RETURN:      None
  *
diff --git a/sys/contrib/dev/acpica/source/compiler/asluuid.c b/sys/contrib/dev/acpica/source/compiler/asluuid.c
index def35c9238..155dec7dd5 100644
--- a/sys/contrib/dev/acpica/source/compiler/asluuid.c
+++ b/sys/contrib/dev/acpica/source/compiler/asluuid.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslwalks.c b/sys/contrib/dev/acpica/source/compiler/aslwalks.c
index 8ee5122c21..16ba00652f 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslwalks.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslwalks.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslxref.c b/sys/contrib/dev/acpica/source/compiler/aslxref.c
index ef99a971de..82d3e8c06c 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslxref.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslxref.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/aslxrefout.c b/sys/contrib/dev/acpica/source/compiler/aslxrefout.c
index 843504a025..6e2cfe47ac 100644
--- a/sys/contrib/dev/acpica/source/compiler/aslxrefout.c
+++ b/sys/contrib/dev/acpica/source/compiler/aslxrefout.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/cvcompiler.c b/sys/contrib/dev/acpica/source/compiler/cvcompiler.c
index 633a31d893..b905791998 100644
--- a/sys/contrib/dev/acpica/source/compiler/cvcompiler.c
+++ b/sys/contrib/dev/acpica/source/compiler/cvcompiler.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/cvdisasm.c b/sys/contrib/dev/acpica/source/compiler/cvdisasm.c
index be3378ba9a..be1ff66647 100644
--- a/sys/contrib/dev/acpica/source/compiler/cvdisasm.c
+++ b/sys/contrib/dev/acpica/source/compiler/cvdisasm.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/cvparser.c b/sys/contrib/dev/acpica/source/compiler/cvparser.c
index 62d981fbdd..3a08fe4aae 100644
--- a/sys/contrib/dev/acpica/source/compiler/cvparser.c
+++ b/sys/contrib/dev/acpica/source/compiler/cvparser.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dtcompile.c b/sys/contrib/dev/acpica/source/compiler/dtcompile.c
index 84d8e5c1b6..e23d98d4c6 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtcompile.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtcompile.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -451,6 +451,48 @@ DtCompileDataTable (
         return (Status);
     }
 
+    /*
+     * If the first field is named "CDAT Table Length" (not "Signature"),
+     * assume that we have a CDAT table (whose table header does not have
+     * a signature). Instead, the TableLength field is where the
+     * signature would (normally) be.
+     */
+    else if (!strcmp ((*FieldList)->Name, "CDAT Table Length"))
+    {
+        /* No longer true: (However, use this technique in the disassembler)
+         * We are assuming that there
+         * should be at least one non-ASCII byte in the 4-character
+         * Signature field, (At least the high-order byte should be zero).
+         */
+        Status = DtCompileTable (FieldList, AcpiDmTableInfoCdatTableHdr,
+            &AslGbl_RootTable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        /* Compile the CDAT */
+
+        DtPushSubtable (AslGbl_RootTable);
+        Status = DtCompileCdat ((void **) FieldList);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        /*
+         * Set the overall table length and the table checksum.
+         * The entire compiled table (including the CDAT table header with
+         * the table length and checksum) is in AslGbl_RootTable->Buffer.
+         */
+        DtSetTableLength ();
+        DtSetTableChecksum (&ACPI_CAST_PTR (ACPI_TABLE_CDAT, AslGbl_RootTable->Buffer)->Checksum);
+
+        DtDumpFieldList (RootField);
+        DtDumpSubtableList ();
+        return (AE_OK);
+    }
+
     /*
      * All other tables must use the common ACPI table header. Insert the
      * current iASL IDs (name, version), and compile the header now.
diff --git a/sys/contrib/dev/acpica/source/compiler/dtcompiler.h b/sys/contrib/dev/acpica/source/compiler/dtcompiler.h
index d9c92ce23e..c3b8776957 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtcompiler.h
+++ b/sys/contrib/dev/acpica/source/compiler/dtcompiler.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -569,18 +569,30 @@ ACPI_STATUS
 DtCompileAest (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileApmt (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileAsf (
     void                    **PFieldList);
 
 ACPI_STATUS
-DtCompileCpep (
+DtCompileAspt (
+    void                    **PFieldList);
+
+ACPI_STATUS
+DtCompileCdat (
     void                    **PFieldList);
 
 ACPI_STATUS
 DtCompileCedt (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileCpep (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileCsrt (
     void                    **PFieldList);
@@ -601,6 +613,10 @@ ACPI_STATUS
 DtCompileEinj (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileErdt (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileErst (
     void                    **PFieldList);
@@ -645,20 +661,24 @@ ACPI_STATUS
 DtCompileMcfg (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileMpam (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileMpst (
     void                    **PFieldList);
 
 ACPI_STATUS
-DtCompileMsct (
+DtCompileMrrm (
     void                    **PFieldList);
 
 ACPI_STATUS
-DtCompileNfit (
+DtCompileMsct (
     void                    **PFieldList);
 
 ACPI_STATUS
-DtCompileNhlt (
+DtCompileNfit (
     void                    **PFieldList);
 
 ACPI_STATUS
@@ -685,10 +705,22 @@ ACPI_STATUS
 DtCompilePrmt (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileRas2 (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileRgrt (
     void                    **PFieldList);
 
+ACPI_STATUS
+DtCompileRhct (
+    void                    **PFieldList);
+
+ACPI_STATUS
+DtCompileRimt (
+    void                    **PFieldList);
+
 ACPI_STATUS
 DtCompileRsdt (
     void                    **PFieldList);
@@ -763,11 +795,15 @@ DtGetGenericTableInfo (
 
 extern const unsigned char  TemplateAest[];
 extern const unsigned char  TemplateAgdi[];
+extern const unsigned char  TemplateApmt[];
 extern const unsigned char  TemplateAsf[];
+extern const unsigned char  TemplateAspt[];
 extern const unsigned char  TemplateBoot[];
 extern const unsigned char  TemplateBdat[];
 extern const unsigned char  TemplateBert[];
 extern const unsigned char  TemplateBgrt[];
+extern const unsigned char  TemplateCcel[];
+extern const unsigned char  TemplateCdat[];
 extern const unsigned char  TemplateCedt[];
 extern const unsigned char  TemplateCpep[];
 extern const unsigned char  TemplateCsrt[];
@@ -777,6 +813,7 @@ extern const unsigned char  TemplateDmar[];
 extern const unsigned char  TemplateDrtm[];
 extern const unsigned char  TemplateEcdt[];
 extern const unsigned char  TemplateEinj[];
+extern const unsigned char  TemplateErdt[];
 extern const unsigned char  TemplateErst[];
 extern const unsigned char  TemplateFadt[];
 extern const unsigned char  TemplateFpdt[];
@@ -790,11 +827,12 @@ extern const unsigned char  TemplateLpit[];
 extern const unsigned char  TemplateMadt[];
 extern const unsigned char  TemplateMcfg[];
 extern const unsigned char  TemplateMchi[];
+extern const unsigned char  TemplateMpam[];
 extern const unsigned char  TemplateMpst[];
+extern const unsigned char  TemplateMrrm[];
 extern const unsigned char  TemplateMsct[];
 extern const unsigned char  TemplateMsdm[];
 extern const unsigned char  TemplateNfit[];
-extern const unsigned char  TemplateNhlt[];
 extern const unsigned char  TemplatePcct[];
 extern const unsigned char  TemplatePdtt[];
 extern const unsigned char  TemplatePhat[];
@@ -802,7 +840,10 @@ extern const unsigned char  TemplatePmtt[];
 extern const unsigned char  TemplatePptt[];
 extern const unsigned char  TemplatePrmt[];
 extern const unsigned char  TemplateRasf[];
+extern const unsigned char  TemplateRas2[];
 extern const unsigned char  TemplateRgrt[];
+extern const unsigned char  TemplateRhct[];
+extern const unsigned char  TemplateRimt[];
 extern const unsigned char  TemplateRsdt[];
 extern const unsigned char  TemplateS3pt[];
 extern const unsigned char  TemplateSbst[];
diff --git a/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.l b/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.l
index bd128bed71..ac99efb5ff 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.l
+++ b/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.l
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.y b/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.y
index 3b1a67a070..7fa06fe52b 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.y
+++ b/sys/contrib/dev/acpica/source/compiler/dtcompilerparser.y
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dtexpress.c b/sys/contrib/dev/acpica/source/compiler/dtexpress.c
index c9705c9d0f..c981a49f75 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtexpress.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtexpress.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -480,10 +480,11 @@ static void
 DtInsertLabelField (
     DT_FIELD                *Field)
 {
+    ACPI_FUNCTION_NAME (DtInsertLabelField);
 
     DbgPrint (ASL_DEBUG_OUTPUT,
-        "DtInsertLabelField: Found Label : %s at output table offset %X\n",
-        Field->Value, Field->TableOffset);
+        "%s: Found Label : %s at output table offset %X\n",
+         ACPI_GET_FUNCTION_NAME, Field->Value, Field->TableOffset);
 
     Field->NextLabel = AslGbl_LabelList;
     AslGbl_LabelList = Field;
diff --git a/sys/contrib/dev/acpica/source/compiler/dtfield.c b/sys/contrib/dev/acpica/source/compiler/dtfield.c
index f4c7114743..3942de55f4 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtfield.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtfield.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -281,8 +281,8 @@ DtCompileString (
     if (Length > ByteLength)
     {
         sprintf (AslGbl_MsgBuffer,
-            "Maximum %u characters, found %u characters [%s]",
-            ByteLength, Length, Field->Value);
+            "Maximum %u characters, found %u characters [%.*s]",
+            ByteLength, Length, (ASL_MSG_BUFFER_SIZE / 2), Field->Value);
         DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
         Length = ByteLength;
     }
@@ -676,6 +676,12 @@ DtCompileFlag (
         BitLength = 2;
         break;
 
+    case ACPI_DMT_FLAGS8_2:
+
+        BitPosition = 2;
+        BitLength = 8;
+        break;
+
     case ACPI_DMT_FLAGS4:
 
         BitPosition = 4;
diff --git a/sys/contrib/dev/acpica/source/compiler/dtio.c b/sys/contrib/dev/acpica/source/compiler/dtio.c
index e1776f3f29..2ee882a1ec 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtio.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtio.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -285,7 +285,7 @@ DtTrim (
     ReturnString = UtLocalCacheCalloc (Length + 1);
     if (strlen (Start))
     {
-        strncpy (ReturnString, Start, Length);
+        memcpy (ReturnString, Start, Length);
     }
 
     ReturnString[Length] = 0;
@@ -377,7 +377,7 @@ DtParseLine (
     Length = ACPI_PTR_DIFF (End, Start);
 
     TmpName = UtLocalCalloc (Length + 1);
-    strncpy (TmpName, Start, Length);
+    memcpy (TmpName, Start, Length);
     Name = DtTrim (TmpName);
     ACPI_FREE (TmpName);
 
@@ -425,7 +425,7 @@ DtParseLine (
     Length = ACPI_PTR_DIFF (End, Start);
     TmpValue = UtLocalCalloc (Length + 1);
 
-    strncpy (TmpValue, Start, Length);
+    memcpy (TmpValue, Start, Length);
     Value = DtTrim (TmpValue);
     ACPI_FREE (TmpValue);
 
@@ -952,7 +952,7 @@ DtDumpBuffer (
     UINT8                   BufChar;
 
 
-    FlPrintFile (FileId, "Output: [%3.3Xh %4.4d %3d] ",
+    FlPrintFile (FileId, "Output: [%3.3Xh %4.4d %3.3Xh] ",
         Offset, Offset, Length);
 
     i = 0;
diff --git a/sys/contrib/dev/acpica/source/compiler/dtparser.l b/sys/contrib/dev/acpica/source/compiler/dtparser.l
index 9d2e3afe42..d0dc97723e 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtparser.l
+++ b/sys/contrib/dev/acpica/source/compiler/dtparser.l
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dtparser.y b/sys/contrib/dev/acpica/source/compiler/dtparser.y
index 1b6f6df613..2f01f06e4f 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtparser.y
+++ b/sys/contrib/dev/acpica/source/compiler/dtparser.y
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dtsubtable.c b/sys/contrib/dev/acpica/source/compiler/dtsubtable.c
index 6ea538e6c6..1735a63295 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtsubtable.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtsubtable.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dttable.c b/sys/contrib/dev/acpica/source/compiler/dttable.c
index fb3f26f13e..d28d5d8ce8 100644
--- a/sys/contrib/dev/acpica/source/compiler/dttable.c
+++ b/sys/contrib/dev/acpica/source/compiler/dttable.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/dttable1.c b/sys/contrib/dev/acpica/source/compiler/dttable1.c
index 2e6a856912..6ceaf135d2 100644
--- a/sys/contrib/dev/acpica/source/compiler/dttable1.c
+++ b/sys/contrib/dev/acpica/source/compiler/dttable1.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -206,7 +206,14 @@ DtCompileAest (
     UINT32                  i;
     UINT32                  Offset;
     DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    ACPI_AEST_NODE_INTERFACE_HEADER *AestNodeHeader;
+    UINT8                   Revision;
+    ACPI_TABLE_HEADER       *Header;
+
+    ParentTable = DtPeekSubtable ();
 
+    Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
+    Revision = Header->Revision;
 
     while (*PFieldList)
     {
@@ -257,8 +264,21 @@ DtCompileAest (
             break;
 
         case ACPI_AEST_VENDOR_ERROR_NODE:
+            switch (Revision)
+            {
+            case 1:
+                InfoTable = AcpiDmTableInfoAestVendorError;
+                break;
+
+            case 2:
+                InfoTable = AcpiDmTableInfoAestVendorV2Error;
+                break;
 
-            InfoTable = AcpiDmTableInfoAestVendorError;
+            default:
+                AcpiOsPrintf ("Unknown AEST Vendor Error Revision: %X\n",
+                    Revision);
+                return (AE_ERROR);
+            }
             break;
 
         case ACPI_AEST_GIC_ERROR_NODE:
@@ -266,6 +286,16 @@ DtCompileAest (
             InfoTable = AcpiDmTableInfoAestGicError;
             break;
 
+        case ACPI_AEST_PCIE_ERROR_NODE:
+
+            InfoTable = AcpiDmTableInfoAestPCIeError;
+            break;
+
+        case ACPI_AEST_PROXY_ERROR_NODE:
+
+            InfoTable = AcpiDmTableInfoAestProxyError;
+            break;
+
         /* Error case below */
         default:
             AcpiOsPrintf ("Unknown AEST Subtable Type: %X\n",
@@ -341,9 +371,57 @@ DtCompileAest (
         }
 
         /* Compile the (required) node interface structure */
+        if (Revision == 1)
+        {
+            InfoTable = AcpiDmTableInfoAestXface;
+        }
+        else if (Revision == 2)
+        {
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXfaceHeader,
+                &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
 
-        Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXface,
-            &Subtable);
+            ParentTable = DtPeekSubtable ();
+            DtInsertSubtable (ParentTable, Subtable);
+
+            Offset += Subtable->Length;
+
+            AestNodeHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER,
+                    Subtable->Buffer);
+
+            switch (AestNodeHeader->GroupFormat)
+            {
+            case ACPI_AEST_NODE_GROUP_FORMAT_4K:
+
+                InfoTable = AcpiDmTableInfoAestXface4k;
+                break;
+
+            case ACPI_AEST_NODE_GROUP_FORMAT_16K:
+
+                InfoTable = AcpiDmTableInfoAestXface16k;
+                break;
+
+            case ACPI_AEST_NODE_GROUP_FORMAT_64K:
+
+                InfoTable = AcpiDmTableInfoAestXface64k;
+                break;
+
+            /* Error case below */
+            default:
+                AcpiOsPrintf ("Unknown AEST Interface Group Format: %X\n",
+                    AestNodeHeader->GroupFormat);
+                return (AE_ERROR);
+            }
+        }
+        else
+        {
+           AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision);
+        }
+
+        Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
@@ -367,8 +445,22 @@ DtCompileAest (
 
         for (i = 0; i < ErrorNodeHeader->NodeInterruptCount; i++)
         {
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXrupt,
-                &Subtable);
+            switch (Revision) {
+            case 1:
+
+                InfoTable = AcpiDmTableInfoAestXrupt;
+                break;
+
+            case 2:
+
+                InfoTable = AcpiDmTableInfoAestXruptV2;
+                break;
+
+            default:
+                AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision);
+                return (AE_ERROR);
+            }
+            Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
             if (ACPI_FAILURE (Status))
             {
                 return (Status);
@@ -387,6 +479,102 @@ DtCompileAest (
 }
 
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileApmt
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile APMT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileApmt (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    ACPI_TABLE_HEADER       *Header;
+    ACPI_APMT_NODE          *ApmtNode;
+    ACPI_APMT_NODE          *PeerApmtNode;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *PeerSubtable;
+    DT_SUBTABLE             *ParentTable;
+    DT_FIELD                **PFieldList = (DT_FIELD**)List;
+    DT_FIELD                *SubtableStart;
+    UINT32                  CurLength;
+    char                    MsgBuffer[64] = "";
+
+    ParentTable = DtPeekSubtable();
+
+    Header = ACPI_CAST_PTR(ACPI_TABLE_HEADER, ParentTable->Buffer);
+
+    CurLength = sizeof(ACPI_TABLE_HEADER);
+
+    /* Walk the parse tree */
+
+    while (*PFieldList)
+    {
+        /* APMT Node Subtable */
+
+        SubtableStart = *PFieldList;
+
+        Status = DtCompileTable(PFieldList, AcpiDmTableInfoApmtNode, &Subtable);
+
+        if (ACPI_FAILURE(Status))
+        {
+            return (Status);
+        }
+
+        ApmtNode = ACPI_CAST_PTR(ACPI_APMT_NODE, Subtable->Buffer);
+
+        if (ApmtNode->Length != sizeof(ACPI_APMT_NODE))
+        {
+            DtFatal(ASL_MSG_INVALID_LENGTH, SubtableStart, "APMT");
+            return (AE_ERROR);
+        }
+
+        if (ApmtNode->Type >= ACPI_APMT_NODE_TYPE_COUNT)
+        {
+            snprintf(MsgBuffer, 64, "Node Type : 0x%X", ApmtNode->Type);
+            DtFatal(ASL_MSG_INVALID_TYPE, SubtableStart, MsgBuffer);
+            return (AE_ERROR);
+        }
+
+        PeerSubtable = DtGetNextSubtable(ParentTable, NULL);
+
+        /* Validate the node id needs to be unique. */
+        while(PeerSubtable)
+        {
+            PeerApmtNode = ACPI_CAST_PTR(ACPI_APMT_NODE, PeerSubtable->Buffer);
+            if (PeerApmtNode->Id == ApmtNode->Id)
+            {
+                snprintf(MsgBuffer, 64, "Node Id : 0x%X existed", ApmtNode->Id);
+                DtFatal(ASL_MSG_DUPLICATE_ITEM, SubtableStart, MsgBuffer);
+                return (AE_ERROR);
+            }
+
+            PeerSubtable = DtGetNextSubtable(ParentTable, PeerSubtable);
+        }
+
+        CurLength += ApmtNode->Length;
+
+        DtInsertSubtable(ParentTable, Subtable);
+    }
+
+    if (Header->Length != CurLength)
+    {
+        snprintf(MsgBuffer, 64, " - APMT Length : %u (expected: %u)",
+            Header->Length, CurLength);
+        DtFatal(ASL_MSG_INVALID_LENGTH, NULL, MsgBuffer);
+        return (AE_ERROR);
+    }
+
+    return (AE_OK);
+}
+
 /******************************************************************************
  *
  * FUNCTION:    DtCompileAsf
@@ -558,6 +746,218 @@ DtCompileAsf (
     return (AE_OK);
 }
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileAspt
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile ASPT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileAspt (
+    void                    **List)
+{
+    ACPI_ASPT_HEADER        *AsptTable;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *ParentTable;
+    ACPI_DMTABLE_INFO       *InfoTable;
+    ACPI_STATUS             Status;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    DT_FIELD                *SubtableStart;
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoAspt, &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    ParentTable = DtPeekSubtable ();
+    DtInsertSubtable (ParentTable, Subtable);
+
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoAsptHdr,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPushSubtable (Subtable);
+
+        AsptTable = ACPI_CAST_PTR (ACPI_ASPT_HEADER, Subtable->Buffer);
+
+        switch (AsptTable->Type) /* Mask off top bit */
+        {
+        case ACPI_ASPT_TYPE_GLOBAL_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt0;
+            break;
+
+        case ACPI_ASPT_TYPE_SEV_MBOX_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt1;
+            break;
+
+        case ACPI_ASPT_TYPE_ACPI_MBOX_REGS:
+
+            InfoTable = AcpiDmTableInfoAspt2;
+            break;
+
+        default:
+
+            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASPT");
+            return (AE_ERROR);
+        }
+
+        Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPopSubtable ();
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileCdat
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile CDAT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileCdat (
+    void                    **List)
+{
+    ACPI_STATUS             Status = AE_OK;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *ParentTable;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    ACPI_CDAT_HEADER        *CdatHeader;
+    ACPI_DMTABLE_INFO       *InfoTable = NULL;
+    DT_FIELD                *SubtableStart;
+
+
+    /* Walk the parse tree.
+     *
+     * Note: Main table consists of only the CDAT table header
+     * (This is not the standard ACPI table header, however)--
+     * Followed by some number of subtables.
+     */
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+
+        /* Compile the expected CDAT Subtable header */
+
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoCdatHeader,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPushSubtable (Subtable);
+
+        CdatHeader = ACPI_CAST_PTR (ACPI_CDAT_HEADER, Subtable->Buffer);
+
+        /* Decode the subtable by type */
+
+        switch (CdatHeader->Type)
+        {
+        case ACPI_CDAT_TYPE_DSMAS:
+            InfoTable = AcpiDmTableInfoCdat0;
+            break;
+
+        case ACPI_CDAT_TYPE_DSLBIS:
+            InfoTable = AcpiDmTableInfoCdat1;
+            break;
+
+        case ACPI_CDAT_TYPE_DSMSCIS:
+            InfoTable = AcpiDmTableInfoCdat2;
+            break;
+
+        case ACPI_CDAT_TYPE_DSIS:
+            InfoTable = AcpiDmTableInfoCdat3;
+            break;
+
+        case ACPI_CDAT_TYPE_DSEMTS:
+            InfoTable = AcpiDmTableInfoCdat4;
+            break;
+
+        case ACPI_CDAT_TYPE_SSLBIS:
+            InfoTable = AcpiDmTableInfoCdat5;
+            break;
+
+        default:
+            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CDAT");
+        }
+
+        /* Compile the CDAT subtable */
+
+        Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+
+        switch (CdatHeader->Type)
+        {
+        /* Multiple entries supported for this type */
+
+        case ACPI_CDAT_TYPE_SSLBIS:
+
+            /*
+             * Check for multiple SSLBEs
+             */
+            while (*PFieldList && !AcpiUtStricmp ((*PFieldList)->Name, "Port X ID"))
+            {
+                Status = DtCompileTable (PFieldList, AcpiDmTableInfoCdatEntries, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+            }
+            break;
+
+        default:
+             break;
+        }
+
+        /* Pop off the CDAT Subtable header subtree */
+
+        DtPopSubtable ();
+    }
+
+    return (AE_OK);
+}
+
 
 /******************************************************************************
  *
@@ -585,47 +985,144 @@ DtCompileCedt (
 
     /* Walk the parse tree */
 
-    while (*PFieldList)
-    {
-        SubtableStart = *PFieldList;
+    while (*PFieldList)
+    {
+        /* if CFMWS and has more than one target, then set to zero later */
+
+        int InsertFlag = 1;
+        SubtableStart = *PFieldList;
+
+        /* CEDT Header */
+
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedtHdr,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPushSubtable (Subtable);
+
+        CedtHeader = ACPI_CAST_PTR (ACPI_CEDT_HEADER, Subtable->Buffer);
+
+        switch (CedtHeader->Type)
+        {
+        case ACPI_CEDT_TYPE_CHBS:
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt0, &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+            break;
+        case ACPI_CEDT_TYPE_CFMWS: {
+            unsigned char *dump;
+            unsigned int idx, offset, max = 0;
+
+            /* Compile table with first "Interleave target" */
+
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt1, &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            /* Look in buffer for the number of targets */
+            offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CFMWS, InterleaveWays);
+            dump = (unsigned char *) Subtable->Buffer - 4;     /* place at beginning of cedt1 */
+            max = 0x01 << dump[offset];     /* 2^max, so 0=1, 1=2, 2=4, 3=8. 8 is MAX */
+            if (max > 8)    max=1;          /* Error in encoding Interleaving Ways. */
+            if (max == 1)                   /* if only one target, then break here. */
+                break;                      /* break if only one target. */
+
+            /* We need to add more interleave targets, so write the current Subtable. */
+
+            ParentTable = DtPeekSubtable ();
+            DtInsertSubtable (ParentTable, Subtable);   /* Insert AcpiDmTableInfoCedt1 table so we can put in */
+            DtPushSubtable (Subtable);                  /* the targets > the first. */
+
+            /* Now, find out all interleave targets beyond the first. */
+
+            for (idx = 1; idx < max; idx++) {
+                ParentTable = DtPeekSubtable ();
+
+                if (*PFieldList)
+                {
+                    Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt1_te, &Subtable);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return (Status);
+                    }
+                    if (Subtable)
+                    {
+                        DtInsertSubtable (ParentTable, Subtable);       /* got a target, so insert table. */
+                        InsertFlag = 0;
+                    }
+                }
+            }
+
+            DtPopSubtable ();
+            ParentTable = DtPeekSubtable ();
+            break;
+        }
+        case ACPI_CEDT_TYPE_CXIMS: {
+            unsigned char *dump;
+            unsigned int idx, offset, max = 0;
+
+            /* Compile table with first "Xor map" */
+
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2, &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            /* Look in buffer for the number of Xor maps */
+            offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CXIMS, NrXormaps);
+            dump = (unsigned char *) Subtable->Buffer - 4;     /* place at beginning of cedt2 */
+            max = dump[offset];
 
-        /* CEDT Header */
+            /* We need to add more XOR maps, so write the current Subtable. */
 
-        Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedtHdr,
-            &Subtable);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
+            ParentTable = DtPeekSubtable ();
+            DtInsertSubtable (ParentTable, Subtable);   /* Insert AcpiDmTableInfoCedt2 table so we can put in */
+            DtPushSubtable (Subtable);
 
-        ParentTable = DtPeekSubtable ();
-        DtInsertSubtable (ParentTable, Subtable);
-        DtPushSubtable (Subtable);
+            /* Now, find out all Xor maps beyond the first. */
 
-        CedtHeader = ACPI_CAST_PTR (ACPI_CEDT_HEADER, Subtable->Buffer);
+            for (idx = 1; idx < max; idx++) {
+                ParentTable = DtPeekSubtable ();
 
-        switch (CedtHeader->Type)
-        {
-        case ACPI_CEDT_TYPE_CHBS:
+                if (*PFieldList)
+                {
+                    Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2_te, &Subtable);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return (Status);
+                    }
+                    if (Subtable)
+                    {
+                        DtInsertSubtable (ParentTable, Subtable);       /* got an Xor map, so insert table. */
+                        InsertFlag = 0;
+                    }
+                }
+            }
 
+            DtPopSubtable ();
+            ParentTable = DtPeekSubtable ();
             break;
+        }
 
         default:
-
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT");
             return (AE_ERROR);
         }
 
-        /* CEDT Subtable */
-
-        Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt0, &Subtable);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
-
         ParentTable = DtPeekSubtable ();
-        DtInsertSubtable (ParentTable, Subtable);
+        if (InsertFlag == 1) {
+                DtInsertSubtable (ParentTable, Subtable);
+        }
         DtPopSubtable ();
     }
 
@@ -1005,6 +1502,16 @@ DtCompileDmar (
             InfoTable = AcpiDmTableInfoDmar4;
             break;
 
+        case ACPI_DMAR_TYPE_SATC:
+
+            InfoTable = AcpiDmTableInfoDmar5;
+            break;
+
+        case ACPI_DMAR_TYPE_SIDP:
+
+            InfoTable = AcpiDmTableInfoDmar6;
+            break;
+
         default:
 
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR");
@@ -1174,76 +1681,335 @@ DtCompileDrtm (
         return (Status);
     }
 
-    DtInsertSubtable (ParentTable, Subtable);
-    DrtmRl = ACPI_CAST_PTR (ACPI_DRTM_RESOURCE_LIST, Subtable->Buffer);
+    DtInsertSubtable (ParentTable, Subtable);
+    DrtmRl = ACPI_CAST_PTR (ACPI_DRTM_RESOURCE_LIST, Subtable->Buffer);
+
+    DtPushSubtable (Subtable);
+    ParentTable = DtPeekSubtable ();
+    Count = 0;
+
+    while (*PFieldList)
+    {
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm1a,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        if (!Subtable)
+        {
+            break;
+        }
+
+        DtInsertSubtable (ParentTable, Subtable);
+        Count++;
+    }
+
+    DrtmRl->ResourceCount = Count;
+    DtPopSubtable ();
+    ParentTable = DtPeekSubtable ();
+
+    /* Compile DPS */
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm2,
+        &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+    DtInsertSubtable (ParentTable, Subtable);
+    /* DrtmDps = ACPI_CAST_PTR (ACPI_DRTM_DPS_ID, Subtable->Buffer);*/
+
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileEinj
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile EINJ.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileEinj (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+
+
+    Status = DtCompileTwoSubtables (List,
+        AcpiDmTableInfoEinj, AcpiDmTableInfoEinj0);
+    return (Status);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileErdt
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile ERST. Complex table with subtables and subsubtables.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileErdt (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    DT_SUBTABLE             *Subtable, *RmddSubtable = NULL, *Subsubtable;
+    DT_SUBTABLE             *ParentTable;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    DT_FIELD                *SubtableStart;
+    ACPI_SUBTBL_HDR_16      *ErdtHeader;
+    ACPI_DMTABLE_INFO       *InfoTable;
+    ACPI_ERDT_MMRC          *Mmrc;
+    ACPI_ERDT_IBRD          *Ibrd;
+    UINT32                  NumEntries;
+    BOOLEAN                 SeenRmdd = FALSE;
+    BOOLEAN                 SeenSubtable = FALSE;
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoErdt,
+        &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    ParentTable = DtPeekSubtable ();
+    DtInsertSubtable (ParentTable, Subtable);
+
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoErdtHdr,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ErdtHeader = ACPI_CAST_PTR (ACPI_SUBTBL_HDR_16, Subtable->Buffer);
+
+        /* RMDD tables at top level. All others are subtables of preceeding RMDD */
+        if (ErdtHeader->Type == ACPI_ERDT_TYPE_RMDD)
+        {
+            if (SeenRmdd && SeenSubtable)
+                DtPopSubtable ();
+            SeenRmdd = TRUE;
+            SeenSubtable = FALSE;
+            RmddSubtable = Subtable;
+        }
+        else
+        {
+            if (!SeenSubtable)
+            {
+                DtPushSubtable (RmddSubtable);
+                SeenSubtable = TRUE;
+            }
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPushSubtable (Subtable);
+
+        switch (ErdtHeader->Type)
+        {
+        case ACPI_ERDT_TYPE_RMDD:
+            InfoTable = AcpiDmTableInfoErdtRmdd;
+            break;
+
+        case ACPI_ERDT_TYPE_CACD:
+             InfoTable = AcpiDmTableInfoErdtCacd;
+             break;
+
+        case ACPI_ERDT_TYPE_DACD:
+             InfoTable = AcpiDmTableInfoErdtDacd;
+             break;
+
+        case ACPI_ERDT_TYPE_CMRC:
+             InfoTable = AcpiDmTableInfoErdtCmrc;
+             break;
+
+        case ACPI_ERDT_TYPE_MMRC:
+             InfoTable = AcpiDmTableInfoErdtMmrc;
+             break;
+
+        case ACPI_ERDT_TYPE_MARC:
+             InfoTable = AcpiDmTableInfoErdtMarc;
+             break;
+
+        case ACPI_ERDT_TYPE_CARC:
+             InfoTable = AcpiDmTableInfoErdtCarc;
+             break;
+
+        case ACPI_ERDT_TYPE_CMRD:
+             InfoTable = AcpiDmTableInfoErdtCmrd;
+             break;
+
+        case ACPI_ERDT_TYPE_IBRD:
+             InfoTable = AcpiDmTableInfoErdtIbrd;
+             break;
+
+        case ACPI_ERDT_TYPE_IBAD:
+             InfoTable = AcpiDmTableInfoErdtIbad;
+             break;
+
+        case ACPI_ERDT_TYPE_CARD:
+             InfoTable = AcpiDmTableInfoErdtCard;
+             break;
+
+        default:
+            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ERDT");
+            return (AE_ERROR);
+        }
+
+        Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+
+        /* Some subtable types end with flex arrays */
+
+        switch (ErdtHeader->Type)
+        {
+        case ACPI_ERDT_TYPE_CACD:
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                    AcpiDmTableInfoErdtCacdX2apic, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                if (!Subtable)
+                {
+                    break;
+                }
+
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+            }
+            break;
+
+        case ACPI_ERDT_TYPE_DACD:
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                    AcpiDmTableInfoErdtDacdScope, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                if (!Subtable)
+                {
+                    break;
+                }
+
+                DtPushSubtable (Subtable);
+                while (*PFieldList)
+                {
+                    Status = DtCompileTable (PFieldList,
+                        AcpiDmTableInfoErdtDacdPath, &Subsubtable);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return (Status);
+                    }
+                    if (!Subsubtable)
+                    {
+                        break;
+                    }
+
+                    ParentTable = DtPeekSubtable ();
+                    DtInsertSubtable (ParentTable, Subsubtable);
+                }
+                DtPopSubtable ();
+
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+            }
+            break;
+
+        case ACPI_ERDT_TYPE_MMRC:
+            Mmrc = ACPI_SUB_PTR (ACPI_ERDT_MMRC, Subtable->Buffer,
+                sizeof(ACPI_SUBTBL_HDR_16));
+            NumEntries = 0;
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                    AcpiDmTableInfoErdtMmrcCorrFactor, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                if (!Subtable)
+                {
+                    break;
+                }
+
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+                NumEntries++;
+            }
+            Mmrc->CorrFactorListLen = NumEntries;
+            break;
+
+        case ACPI_ERDT_TYPE_IBRD:
+            Ibrd = ACPI_SUB_PTR (ACPI_ERDT_IBRD, Subtable->Buffer,
+                sizeof(ACPI_SUBTBL_HDR_16));
+            NumEntries = 0;
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                    AcpiDmTableInfoErdtIbrdCorrFactor, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                if (!Subtable)
+                {
+                    break;
+                }
 
-    DtPushSubtable (Subtable);
-    ParentTable = DtPeekSubtable ();
-    Count = 0;
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+                NumEntries++;
+            }
+            Ibrd->CorrFactorListLen = NumEntries;
+            break;
 
-    while (*PFieldList)
-    {
-        Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm1a,
-            &Subtable);
-        if (ACPI_FAILURE (Status))
-        {
-            return (Status);
-        }
+        default:
+            /* Already checked for valid subtable type above */
 
-        if (!Subtable)
-        {
             break;
         }
-
-        DtInsertSubtable (ParentTable, Subtable);
-        Count++;
+        DtPopSubtable ();
     }
 
-    DrtmRl->ResourceCount = Count;
-    DtPopSubtable ();
-    ParentTable = DtPeekSubtable ();
-
-    /* Compile DPS */
-
-    Status = DtCompileTable (PFieldList, AcpiDmTableInfoDrtm2,
-        &Subtable);
-    if (ACPI_FAILURE (Status))
+    if (SeenSubtable)
     {
-        return (Status);
+        DtPopSubtable ();
     }
-    DtInsertSubtable (ParentTable, Subtable);
-    /* DrtmDps = ACPI_CAST_PTR (ACPI_DRTM_DPS_ID, Subtable->Buffer);*/
-
 
     return (AE_OK);
 }
 
 
-/******************************************************************************
- *
- * FUNCTION:    DtCompileEinj
- *
- * PARAMETERS:  List                - Current field list pointer
- *
- * RETURN:      Status
- *
- * DESCRIPTION: Compile EINJ.
- *
- *****************************************************************************/
-
-ACPI_STATUS
-DtCompileEinj (
-    void                    **List)
-{
-    ACPI_STATUS             Status;
-
-
-    Status = DtCompileTwoSubtables (List,
-        AcpiDmTableInfoEinj, AcpiDmTableInfoEinj0);
-    return (Status);
-}
-
-
 /******************************************************************************
  *
  * FUNCTION:    DtCompileErst
@@ -1731,7 +2497,7 @@ DtCompileHmat (
         DtInsertSubtable (ParentTable, Subtable);
         HmatStruct->Length += Subtable->Length;
 
-        /* Compile HMAT structure additionals */
+        /* Compile HMAT structure additional */
 
         switch (HmatStruct->Type)
         {
@@ -1903,9 +2669,9 @@ DtCompileIort (
     Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
     Revision = Table->Revision;
 
-    /* Both IORT Rev E and E.a have known issues and are not supported */
+    /* IORT Revisions E, E.a & E.c have known issues and are not supported */
 
-    if (Revision == 1 || Revision == 2)
+    if (Revision == 1 || Revision == 2 || Revision == 4)
     {
         DtError (ASL_ERROR, ASL_MSG_UNSUPPORTED, NULL, "IORT table revision");
         return (AE_ERROR);
@@ -2218,7 +2984,7 @@ DtCompileIort (
             IortRmr->RmrCount = RmrCount;
             break;
 
-	default:
+        default:
 
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IORT");
             return (AE_ERROR);
@@ -2441,7 +3207,6 @@ DtCompileIvrs (
 
             DtInsertSubtable (MainSubtable, Subtable);
             DtPushSubtable (Subtable);
-            ParentTable = MainSubtable;
             break;
 
         case ACPI_IVRS_TYPE_HID:
@@ -2578,3 +3343,254 @@ DtCompileIvrs (
 
     return (AE_OK);
 }
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileRimt
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile RIMT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileRimt (
+    void                    **List)
+{
+    ACPI_RIMT_PLATFORM_DEVICE  *PlatDevNode;
+    ACPI_RIMT_PCIE_RC          *PcieRcNode;
+    ACPI_TABLE_RIMT            *Rimt;
+    ACPI_RIMT_IOMMU            *IommuNode;
+    ACPI_RIMT_NODE             *RimtNode;
+    ACPI_STATUS                Status;
+    DT_SUBTABLE                *Subtable;
+    DT_SUBTABLE                *ParentTable;
+    DT_FIELD                   **PFieldList = (DT_FIELD **) List;
+    DT_FIELD                   *SubtableStart;
+    UINT32                     NodeNumber;
+    UINT32                     NodeLength;
+    UINT16                     IdMappingNumber;
+    UINT32                     i;
+
+
+    ParentTable = DtPeekSubtable ();
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimt, &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    DtInsertSubtable (ParentTable, Subtable);
+
+    /*
+     * Using ACPI_SUB_PTR, We needn't define a separate structure. Care
+     * should be taken to avoid accessing ACPI_TABLE_HEADER fields.
+     */
+    Rimt = ACPI_SUB_PTR (ACPI_TABLE_RIMT, Subtable->Buffer,
+                         sizeof (ACPI_TABLE_HEADER));
+
+    NodeNumber = 0;
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtNodeHdr, &Subtable);
+
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        DtInsertSubtable (ParentTable, Subtable);
+        RimtNode = ACPI_CAST_PTR (ACPI_RIMT_NODE, Subtable->Buffer);
+        NodeLength = ACPI_OFFSET (ACPI_RIMT_NODE, NodeData);
+
+        DtPushSubtable (Subtable);
+        ParentTable = DtPeekSubtable ();
+
+        switch (RimtNode->Type)
+        {
+        case ACPI_RIMT_NODE_TYPE_IOMMU:
+
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtIommu,
+                                     &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            IommuNode = ACPI_CAST_PTR (ACPI_RIMT_IOMMU, Subtable->Buffer);
+            DtInsertSubtable (ParentTable, Subtable);
+            NodeLength += Subtable->Length;
+
+            for (i = 0; i < IommuNode->NumInterruptWires; i++)
+            {
+                while (*PFieldList)
+                {
+                    Status = DtCompileTable (PFieldList,
+                                             AcpiDmTableInfoRimtIommuWire,
+                                             &Subtable);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return (Status);
+                    }
+                    if (!Subtable)
+                    {
+                        break;
+                    }
+
+                    DtInsertSubtable (ParentTable, Subtable);
+                    NodeLength += Subtable->Length;
+                }
+            }
+
+            break;
+
+        case ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX:
+
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPcieRc,
+                                     &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            DtInsertSubtable (ParentTable, Subtable);
+            PcieRcNode = ACPI_CAST_PTR (ACPI_RIMT_PCIE_RC, Subtable->Buffer);
+            NodeLength += Subtable->Length;
+
+            /* Compile Array of ID mappings */
+
+            PcieRcNode->IdMappingOffset = (UINT16) NodeLength;
+            IdMappingNumber = 0;
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                                         AcpiDmTableInfoRimtIdMapping,
+                                         &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+
+                if (!Subtable)
+                {
+                    break;
+                }
+
+                DtInsertSubtable (ParentTable, Subtable);
+                NodeLength += sizeof (ACPI_RIMT_ID_MAPPING);
+                IdMappingNumber++;
+            }
+
+            PcieRcNode->NumIdMappings = IdMappingNumber;
+            if (!IdMappingNumber)
+            {
+                PcieRcNode->IdMappingOffset = 0;
+            }
+
+            break;
+
+        case ACPI_RIMT_NODE_TYPE_PLAT_DEVICE:
+
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPlatDev,
+                                     &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            DtInsertSubtable (ParentTable, Subtable);
+            PlatDevNode = ACPI_CAST_PTR (ACPI_RIMT_PLATFORM_DEVICE, Subtable->Buffer);
+            NodeLength += Subtable->Length;
+
+            /*
+             * Padding - Variable-length data
+             * Optionally allows the offset of the ID mappings to be used
+             * for filling this field.
+             */
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoRimtPlatDevPad,
+                                     &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            if (Subtable)
+            {
+                DtInsertSubtable (ParentTable, Subtable);
+                NodeLength += Subtable->Length;
+            }
+            else
+            {
+                if (NodeLength > PlatDevNode->IdMappingOffset)
+                {
+                    return (AE_BAD_DATA);
+                }
+
+                if (NodeLength < PlatDevNode->IdMappingOffset)
+                {
+                    Status = DtCompilePadding (
+                        PlatDevNode->IdMappingOffset - (UINT16) NodeLength,
+                        &Subtable);
+                    if (ACPI_FAILURE (Status))
+                    {
+                        return (Status);
+                    }
+
+                    DtInsertSubtable (ParentTable, Subtable);
+                    NodeLength = PlatDevNode->IdMappingOffset;
+                }
+            }
+
+            /* Compile Array of ID mappings */
+
+            PlatDevNode->IdMappingOffset = (UINT16) NodeLength;
+            IdMappingNumber = 0;
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                                         AcpiDmTableInfoRimtIdMapping,
+                                         &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+
+                if (!Subtable)
+                {
+                    break;
+                }
+
+                DtInsertSubtable (ParentTable, Subtable);
+                NodeLength += sizeof (ACPI_RIMT_ID_MAPPING);
+                IdMappingNumber++;
+            }
+
+            PlatDevNode->NumIdMappings = IdMappingNumber;
+            if (!IdMappingNumber)
+            {
+                PlatDevNode->IdMappingOffset = 0;
+            }
+
+            break;
+
+
+        default:
+
+            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "RIMT");
+            return (AE_ERROR);
+        }
+
+        DtPopSubtable ();
+        ParentTable = DtPeekSubtable ();
+        NodeNumber++;
+    }
+
+    Rimt->NumNodes = NodeNumber;
+    return (AE_OK);
+}
diff --git a/sys/contrib/dev/acpica/source/compiler/dttable2.c b/sys/contrib/dev/acpica/source/compiler/dttable2.c
index 8540636117..c752965c3d 100644
--- a/sys/contrib/dev/acpica/source/compiler/dttable2.c
+++ b/sys/contrib/dev/acpica/source/compiler/dttable2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -254,8 +254,10 @@ DtCompileMadt (
     DT_SUBTABLE             *ParentTable;
     DT_FIELD                **PFieldList = (DT_FIELD **) List;
     DT_FIELD                *SubtableStart;
+    ACPI_TABLE_HEADER       *Table;
     ACPI_SUBTABLE_HEADER    *MadtHeader;
     ACPI_DMTABLE_INFO       *InfoTable;
+    UINT8                   Revision;
 
 
     Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadt,
@@ -268,6 +270,9 @@ DtCompileMadt (
     ParentTable = DtPeekSubtable ();
     DtInsertSubtable (ParentTable, Subtable);
 
+    Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
+    Revision = Table->Revision;
+
     while (*PFieldList)
     {
         SubtableStart = *PFieldList;
@@ -343,7 +348,12 @@ DtCompileMadt (
 
         case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
 
-            InfoTable = AcpiDmTableInfoMadt11;
+            if (Revision > 6)
+                    InfoTable = AcpiDmTableInfoMadt11b;
+            else if (Revision == 6)
+                    InfoTable = AcpiDmTableInfoMadt11a;
+            else
+                    InfoTable = AcpiDmTableInfoMadt11;
             break;
 
         case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
@@ -358,12 +368,15 @@ DtCompileMadt (
 
         case ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR:
 
-            InfoTable = AcpiDmTableInfoMadt14;
+            InfoTable = Revision > 6 ? AcpiDmTableInfoMadt14a
+                                     : AcpiDmTableInfoMadt14;
             break;
 
         case ACPI_MADT_TYPE_GENERIC_TRANSLATOR:
 
-            InfoTable = AcpiDmTableInfoMadt15;
+            InfoTable = Revision > 6 ? AcpiDmTableInfoMadt15a
+                                     : AcpiDmTableInfoMadt15;
+
             break;
 
         case ACPI_MADT_TYPE_MULTIPROC_WAKEUP:
@@ -371,10 +384,74 @@ DtCompileMadt (
             InfoTable = AcpiDmTableInfoMadt16;
             break;
 
+        case ACPI_MADT_TYPE_CORE_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt17;
+            break;
+
+        case ACPI_MADT_TYPE_LIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt18;
+            break;
+
+        case ACPI_MADT_TYPE_HT_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt19;
+            break;
+
+        case ACPI_MADT_TYPE_EIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt20;
+            break;
+
+        case ACPI_MADT_TYPE_MSI_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt21;
+            break;
+
+        case ACPI_MADT_TYPE_BIO_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt22;
+            break;
+
+        case ACPI_MADT_TYPE_LPC_PIC:
+
+            InfoTable = AcpiDmTableInfoMadt23;
+            break;
+
+        case ACPI_MADT_TYPE_RINTC:
+
+            InfoTable = AcpiDmTableInfoMadt24;
+            break;
+
+        case ACPI_MADT_TYPE_IMSIC:
+
+            InfoTable = AcpiDmTableInfoMadt25;
+            break;
+
+        case ACPI_MADT_TYPE_APLIC:
+
+            InfoTable = AcpiDmTableInfoMadt26;
+            break;
+
+        case ACPI_MADT_TYPE_PLIC:
+
+            InfoTable = AcpiDmTableInfoMadt27;
+            break;
+
         default:
 
-            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
-            return (AE_ERROR);
+            if (MadtHeader->Type >= ACPI_MADT_TYPE_OEM_RESERVED)
+            {
+                InfoTable = AcpiDmTableInfoMadt128;
+            }
+            else
+            {
+                DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
+                return (AE_ERROR);
+            }
+
+            break;
         }
 
         Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
@@ -416,6 +493,163 @@ DtCompileMcfg (
     return (Status);
 }
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileMpam
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile MPAM.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileMpam (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    DT_SUBTABLE             *ParentTable;
+    DT_SUBTABLE             *Subtable;
+    DT_FIELD                *SubtableStart;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    ACPI_MPAM_MSC_NODE      *MpamMscNode;
+    ACPI_MPAM_RESOURCE_NODE *MpamResourceNode;
+    UINT32                  FuncDepsCount;
+    UINT32                  RisLength;
+    ACPI_DMTABLE_INFO       *InfoTable;
+
+    ParentTable = DtPeekSubtable ();
+
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+
+        /* Main MSC Node table */
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam0,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        MpamMscNode = ACPI_CAST_PTR (ACPI_MPAM_MSC_NODE, Subtable->Buffer);
+
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+        DtPushSubtable (Subtable);
+
+        ParentTable = DtPeekSubtable ();
+
+        /*
+         * RIS(es) per MSC node have variable lengths depending on how many RISes there and
+         * any how many functional dependencies per RIS. Calculate it in order
+         * to properly set the overall MSC length.
+         */
+        RisLength = 0;
+
+        /* Iterate over RIS subtables per MSC node */
+        for (UINT32 ris = 0; ris < MpamMscNode->NumResourceNodes; ris++)
+        {
+            /* Compile RIS subtable */
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam1,
+                &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            MpamResourceNode = ACPI_CAST_PTR (ACPI_MPAM_RESOURCE_NODE, Subtable->Buffer);
+            DtInsertSubtable (ParentTable, Subtable);
+            DtPushSubtable (Subtable);
+
+            ParentTable = DtPeekSubtable ();
+
+            switch (MpamResourceNode->LocatorType)
+            {
+                case ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE:
+                    InfoTable = AcpiDmTableInfoMpam1A;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_MEMORY:
+                    InfoTable = AcpiDmTableInfoMpam1B;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_SMMU:
+                    InfoTable = AcpiDmTableInfoMpam1C;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE:
+                    InfoTable = AcpiDmTableInfoMpam1D;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE:
+                    InfoTable = AcpiDmTableInfoMpam1E;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_INTERCONNECT:
+                    InfoTable = AcpiDmTableInfoMpam1F;
+                    break;
+                case ACPI_MPAM_LOCATION_TYPE_UNKNOWN:
+                    InfoTable = AcpiDmTableInfoMpam1G;
+                default:
+                    DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "Resource Locator Type");
+                    return (AE_ERROR);
+            }
+
+            /* Compile Resource Locator Table */
+            Status = DtCompileTable (PFieldList, InfoTable,
+                &Subtable);
+
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            DtInsertSubtable (ParentTable, Subtable);
+
+            /* Compile the number of functional dependencies per RIS */
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam1Deps,
+                &Subtable);
+
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+
+            DtInsertSubtable (ParentTable, Subtable);
+            FuncDepsCount = *ACPI_CAST_PTR (UINT32, Subtable->Buffer);
+
+            RisLength += sizeof(ACPI_MPAM_RESOURCE_NODE) +
+                FuncDepsCount * sizeof(ACPI_MPAM_FUNC_DEPS);
+
+            /* Iterate over functional dependencies per RIS */
+            for (UINT32 funcDep = 0; funcDep < FuncDepsCount; funcDep++)
+            {
+                /* Compiler functional dependencies table */
+                Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam2,
+                    &Subtable);
+
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+
+                DtInsertSubtable (ParentTable, Subtable);
+            }
+
+            DtPopSubtable ();
+        }
+
+        /* Check if the length of the MSC is correct and override with the correct length */
+        if (MpamMscNode->Length != sizeof(ACPI_MPAM_MSC_NODE) + RisLength)
+        {
+            MpamMscNode->Length = (UINT16) (sizeof(ACPI_MPAM_MSC_NODE) + RisLength);
+            DbgPrint (ASL_DEBUG_OUTPUT, "Overriding MSC->Length: %X\n", MpamMscNode->Length);
+        }
+
+        DtPopSubtable ();
+    }
+
+    return (AE_OK);
+}
+
 
 /******************************************************************************
  *
@@ -554,6 +788,57 @@ DtCompileMpst (
 }
 
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileMrrm
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile MRRM.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileMrrm (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *ParentTable;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+
+    /* Main table */
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoMrrm,
+        &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    ParentTable = DtPeekSubtable ();
+    DtInsertSubtable (ParentTable, Subtable);
+
+    /* Subtables (all are same type) */
+
+    while (*PFieldList)
+    {
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoMrrm0,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        DtInsertSubtable (ParentTable, Subtable);
+    }
+
+    return (AE_OK);
+}
+
+
 /******************************************************************************
  *
  * FUNCTION:    DtCompileMsct
@@ -755,410 +1040,26 @@ DtCompileNfit (
                     &Subtable);
                 if (ACPI_FAILURE (Status))
                 {
-                    return (Status);
-                }
-
-                if (!Subtable)
-                {
-                    DtPopSubtable ();
-                    break;
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-                Count++;
-            }
-
-            Hint->HintCount = (UINT16) Count;
-            break;
-
-        default:
-            break;
-        }
-    }
-
-    return (AE_OK);
-}
-
-
-/******************************************************************************
- *
- * FUNCTION:    DtCompileNhlt
- *
- * PARAMETERS:  List                - Current field list pointer
- *
- * RETURN:      Status
- *
- * DESCRIPTION: Compile NHLT.
- *
- *****************************************************************************/
-
-ACPI_STATUS
-DtCompileNhlt (
-    void                    **List)
-{
-    ACPI_STATUS             Status;
-    UINT32                  EndpointCount;
-    UINT32                  MicrophoneCount;
-    UINT32                  FormatsCount;
-    DT_SUBTABLE             *Subtable;
-    DT_SUBTABLE             *ParentTable;
-    DT_FIELD                **PFieldList = (DT_FIELD **) List;
-    UINT32                  CapabilitiesSize;
-    UINT8                   ArrayType;
-    UINT8                   ConfigType;
-    UINT8                   LinuxSpecificCount;
-    UINT32                  i;
-    UINT32                  j;
-    ACPI_TABLE_NHLT_ENDPOINT_COUNT      *MainTable;
-    ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A  *DevSpecific;
-    ACPI_NHLT_VENDOR_MIC_COUNT          *MicCount;
-    ACPI_NHLT_FORMATS_CONFIG            *FormatsConfig;
-    ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D  *ConfigSpecific;
-    ACPI_NHLT_LINUX_SPECIFIC_COUNT      *LinuxSpecific;
-
-
-    /* Main table */
-
-    Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt,
-        &Subtable);
-    if (ACPI_FAILURE (Status))
-    {
-        return (Status);
-    }
-
-    /* Get the Endpoint Descriptor count */
-
-    ParentTable = DtPeekSubtable ();
-    DtInsertSubtable (ParentTable, Subtable);
-    DtPushSubtable (Subtable);
-
-    MainTable = ACPI_CAST_PTR (ACPI_TABLE_NHLT_ENDPOINT_COUNT, Subtable->Buffer);
-    EndpointCount = MainTable->EndpointCount;
-
-    /* Subtables */
-
-    while (*PFieldList)
-    {
-        /* Variable number of Endpoint descriptors */
-
-        for (i = 0; i < EndpointCount; i++)
-        {
-            /* Do the Endpoint Descriptor */
-
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt0,
-                &Subtable);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
-            }
-
-            ParentTable = DtPeekSubtable ();
-            DtInsertSubtable (ParentTable, Subtable);
-            DtPushSubtable (Subtable);
-
-            /* Do the Device Specific table */
-
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5b,
-                &Subtable);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
-            }
-
-            ParentTable = DtPeekSubtable ();
-            DtInsertSubtable (ParentTable, Subtable);
-            DtPushSubtable (Subtable);
-
-            DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable->Buffer);
-            CapabilitiesSize = DevSpecific->CapabilitiesSize;
-
-            ArrayType = 0;
-            ConfigType = 0;
-
-            switch (CapabilitiesSize)
-            {
-            case 0:
-                break;
-
-            case 1:
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5c,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-                break;
-
-            case 2:
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-                break;
-
-            case 3:
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-                ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer);
-                ArrayType = ConfigSpecific->ArrayType;
-                ConfigType = ConfigSpecific->ConfigType;
-                break;
-
-            case 7:
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6b,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-                ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer);
-                ArrayType = ConfigSpecific->ArrayType;
-                ConfigType = ConfigSpecific->ConfigType;
-                break;
-
-            default:
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-                ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer);
-                ArrayType = ConfigSpecific->ArrayType;
-                ConfigType = ConfigSpecific->ConfigType;
-                break;
-
-            } /* switch (CapabilitiesSize) */
-
-            if (CapabilitiesSize >= 3)
-            {
-                /* Check for a vendor-defined mic array */
-
-                if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY)
-                {
-                    if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED)
-                    {
-                        /* Get the microphone count */
-
-                        Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6a,
-                            &Subtable);
-                        if (ACPI_FAILURE (Status))
-                        {
-                            return (Status);
-                        }
-
-                        MicCount = ACPI_CAST_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Subtable->Buffer);
-                        MicrophoneCount = MicCount->MicrophoneCount;
-
-                        ParentTable = DtPeekSubtable ();
-                        DtInsertSubtable (ParentTable, Subtable);
-
-                        /* Variable number of microphones */
-
-                        for (j = 0; j < MicrophoneCount; j++)
-                        {
-                            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6,
-                                &Subtable);
-                            if (ACPI_FAILURE (Status))
-                            {
-                                return (Status);
-                            }
-
-                            ParentTable = DtPeekSubtable ();
-                            DtInsertSubtable (ParentTable, Subtable);
-                        }
-
-                        /* Do the MIC_SNR_SENSITIVITY_EXTENSION, if present */
-
-                        if (ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK)
-                        {
-                            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt9,
-                                &Subtable);
-                            if (ACPI_FAILURE (Status))
-                            {
-                                return (Status);
-                            }
-
-                            ParentTable = DtPeekSubtable ();
-                            DtInsertSubtable (ParentTable, Subtable);
-                        }
-                    }
-                }
-            }
-
-            /* Get the formats count */
-
-            DtPopSubtable ();
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt4,
-                &Subtable);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
-            }
-
-            ParentTable = DtPeekSubtable ();
-            DtInsertSubtable (ParentTable, Subtable);
-
-            FormatsConfig = ACPI_CAST_PTR (ACPI_NHLT_FORMATS_CONFIG, Subtable->Buffer);
-            FormatsCount = FormatsConfig->FormatsCount;
-
-            /* Variable number of wave_format_extensible structs */
-
-            for (j = 0; j < FormatsCount; j++)
-            {
-                /* Do the main wave_format_extensible structure */
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-                DtPushSubtable (Subtable);
-
-                /* Do the capabilities list */
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3a,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                DtPopSubtable ();
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-            } /* for (j = 0; j < FormatsCount; j++) */
-
-            /*
-             * If we are not done with the current Endpoint yet, then there must be
-             * some Linux-specific structure(s) yet to be processed. First, get
-             * the count of such structure(s).
-             */
-            if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length")))
-            {
-                /* Get the count of Linux-specific structures */
-
-                Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7,
-                    &Subtable);
-                if (ACPI_FAILURE (Status))
-                {
-                    return (Status);
-                }
-
-                ParentTable = DtPeekSubtable ();
-                DtInsertSubtable (ParentTable, Subtable);
-
-                LinuxSpecific = ACPI_CAST_PTR (ACPI_NHLT_LINUX_SPECIFIC_COUNT, Subtable->Buffer);
-                LinuxSpecificCount = LinuxSpecific->StructureCount;
-
-                for (j = 0; j < LinuxSpecificCount; j++)
-                {
-                    /*
-                     * Compile the following Linux-specific fields:
-                     *  1) Device ID
-                     *  2) Device Instance ID
-                     *  3) Device Port ID
-                     */
-                    Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7a,
-                        &Subtable);
-                    if (ACPI_FAILURE (Status))
-                    {
-                        return (Status);
-                    }
-
-                    ParentTable = DtPeekSubtable ();
-                    DtInsertSubtable (ParentTable, Subtable);
-
-                    /*
-                     * To have a valid Linux-specific "Specific Data" at this
-                     * point, we need:
-                     * 1) The next field must be named "Specific Data"
-                     */
-                    if (!strcmp ((const char *) (*PFieldList)->Name, "Specific Data"))
-                    {
-                        /* Compile the "Specific Data" field */
-
-                        Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7b,
-                            &Subtable);
-                        if (ACPI_FAILURE (Status))
-                        {
-                            return (Status);
-                        }
-
-                        ParentTable = DtPeekSubtable ();
-                        DtInsertSubtable (ParentTable, Subtable);
-                    }
-
-                } /* for (j = 0; j < LinuxSpecificCount; j++) */
-            }
-
-            DtPopSubtable ();
+                    return (Status);
+                }
 
-        } /* for (i = 0; i < EndpointCount; i++) */
+                if (!Subtable)
+                {
+                    DtPopSubtable ();
+                    break;
+                }
 
-        /*
-         * All Endpoint Descriptors are completed.
-         * Do the table terminator structure (not in NHLT spec, optional)
-         */
-        if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length")))
-        {
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt8,
-                &Subtable);
-            if (ACPI_FAILURE (Status))
-            {
-                return (Status);
+                ParentTable = DtPeekSubtable ();
+                DtInsertSubtable (ParentTable, Subtable);
+                Count++;
             }
 
-            ParentTable = DtPeekSubtable ();
-            DtInsertSubtable (ParentTable, Subtable);
-        }
+            Hint->HintCount = (UINT16) Count;
+            break;
 
-        return (AE_OK);
+        default:
+            break;
+        }
     }
 
     return (AE_OK);
@@ -1356,19 +1257,30 @@ DtCompilePhat (
     ACPI_PHAT_HEADER        *PhatHeader;
     ACPI_DMTABLE_INFO       *Info;
     ACPI_PHAT_VERSION_DATA  *VersionData;
+    UINT32                  DeviceDataLength;
     UINT32                  RecordCount;
+    DT_FIELD                *DataOffsetField;
+    DT_FIELD                *DevicePathField;
+    UINT32                  TableOffset = 0;
+    UINT32                  DataOffsetValue;
+    UINT32                  i;
 
 
-    /* The table consist of subtables */
+    /* The table consists of subtables */
 
     while (*PFieldList)
     {
+        /* Compile the common subtable header */
+
         Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhatHdr, &Subtable);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
         }
 
+        TableOffset += Subtable->Length;
+        DbgPrint (ASL_DEBUG_OUTPUT, "0 Subtable->Length: %X\n", Subtable->Length);
+
         ParentTable = DtPeekSubtable ();
         DtInsertSubtable (ParentTable, Subtable);
         DtPushSubtable (Subtable);
@@ -1379,12 +1291,66 @@ DtCompilePhat (
         {
         case ACPI_PHAT_TYPE_FW_VERSION_DATA:
 
+            /* Compile the middle portion of the Firmware Version Data */
+
             Info = AcpiDmTableInfoPhat0;
             PhatHeader->Length = sizeof (ACPI_PHAT_VERSION_DATA);
+            DataOffsetField = NULL;
             break;
 
         case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
 
+            DbgPrint (ASL_DEBUG_OUTPUT, "1 Offset: %X, Name: \"%s\" Length: %X\n",
+                (*PFieldList)->TableOffset, (*PFieldList)->Name, Subtable->Length);
+
+            DataOffsetField = *PFieldList;
+
+            /* Walk the field list to get to the "Device-specific data Offset" field */
+
+            TableOffset = sizeof (ACPI_PHAT_HEALTH_DATA);
+            for (i = 0; i < 3; i++)
+            {
+                DataOffsetField = DataOffsetField->Next;
+                DbgPrint (ASL_DEBUG_OUTPUT, "2 Offset: %X, Name: \"%s\" Length: %X Value: %s:\n",
+                    TableOffset, DataOffsetField->Name, DataOffsetField->StringLength, DataOffsetField->Value);
+            }
+
+            /* Convert DataOffsetField->Value (a char * string) to an integer value */
+
+            sscanf (DataOffsetField->Value, "%X", &DataOffsetValue);
+
+            /*
+             * Get the next field (Device Path):
+             * DataOffsetField points to "Device-Specific Offset", next field is
+             * "Device Path".
+             */
+            DevicePathField = DataOffsetField->Next;
+
+            /* Compute the size of the input ASCII string as a unicode string (*2 + 2) */
+
+            DevicePathField->StringLength = (strlen ((const char *) DevicePathField->Value) * 2) + 2;
+            TableOffset += DevicePathField->StringLength;
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "3 Offset: %X, Length: %X devicepathLength: %X\n",
+                TableOffset, Subtable->Length, DevicePathField->StringLength);
+
+            /* Set the DataOffsetField to the current TableOffset */
+            /* Must set the DataOffsetField here (not later) */
+
+            if (DataOffsetValue != 0)
+            {
+                snprintf (DataOffsetField->Value, Subtable->Length, "%X", TableOffset);
+            }
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "4 Offset: %X, Length: %X\n", TableOffset, Subtable->Length);
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "5 TableOffset: %X, DataOffsetField->StringLength: "
+                "%X DevicePathField Length: %X DevicePathField->Value: %s, DataOffsetField->Value: %s DataOffsetField->ByteOffset %X\n",
+                TableOffset, DataOffsetField->StringLength, DevicePathField->StringLength,
+                DevicePathField->Value, DataOffsetField->Value, DataOffsetField->ByteOffset);
+
+            /* Compile the middle portion of the Health Data Record */
+
             Info = AcpiDmTableInfoPhat1;
             PhatHeader->Length = sizeof (ACPI_PHAT_HEALTH_DATA);
             break;
@@ -1393,16 +1359,19 @@ DtCompilePhat (
 
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, *PFieldList, "PHAT");
             return (AE_ERROR);
-
-            break;
         }
 
+        /* Compile either the Version Data or the Health Data */
+
         Status = DtCompileTable (PFieldList, Info, &Subtable);
         if (ACPI_FAILURE (Status))
         {
             return (Status);
         }
 
+        DbgPrint (ASL_DEBUG_OUTPUT, "6 Offset: %X, Name: \"%s\" SubtableLength: %X\n",
+            TableOffset /* - StartTableOffset*/, (*PFieldList)->Name, Subtable->Length);
+
         ParentTable = DtPeekSubtable ();
         DtInsertSubtable (ParentTable, Subtable);
 
@@ -1414,6 +1383,8 @@ DtCompilePhat (
                 (Subtable->Buffer - sizeof (ACPI_PHAT_HEADER)));
             RecordCount = VersionData->ElementCount;
 
+            /* Compile all of the Version Elements */
+
             while (RecordCount)
             {
                 Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat0a,
@@ -1422,17 +1393,29 @@ DtCompilePhat (
                 {
                     return (Status);
                 }
+
                 ParentTable = DtPeekSubtable ();
                 DtInsertSubtable (ParentTable, Subtable);
 
+                TableOffset += Subtable->Length;
                 RecordCount--;
                 PhatHeader->Length += sizeof (ACPI_PHAT_VERSION_ELEMENT);
             }
+
+            DtPopSubtable ();
             break;
 
         case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
 
-            /* Compile device path */
+            /* Compile the Device Path */
+
+            DeviceDataLength = Subtable->Length;
+            TableOffset += Subtable->Length;
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "7 Device Path Length: %X FieldName: \"%s\" FieldLength: "
+                "%s FieldValue: %s SubtableLength: %X TableOffset: %X\n", DeviceDataLength,
+                (*PFieldList)->Name, DataOffsetField->Value, (*PFieldList)->Value,
+                Subtable->Length, TableOffset);
 
             Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1a, &Subtable);
             if (ACPI_FAILURE (Status))
@@ -1442,20 +1425,58 @@ DtCompilePhat (
             ParentTable = DtPeekSubtable ();
             DtInsertSubtable (ParentTable, Subtable);
 
+            /* *PFieldList will be null if previous field was at the end-of-ParseTree (EOF) */
+
+            if (!*PFieldList)
+            {
+                DbgPrint (ASL_DEBUG_OUTPUT, "8 Exit on end-of-ParseTree\n");
+                return (AE_OK);
+            }
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "9 Device Data Length: %X FieldName: \"%s"
+                " TableOffset: %X FieldLength: %X Field Value: %s SubtableLength: %X\n",
+                DeviceDataLength, (*PFieldList)->Name, TableOffset,
+                (*PFieldList)->StringLength, (*PFieldList)->Value, Subtable->Length);
+
             PhatHeader->Length += (UINT16) Subtable->Length;
 
-            /* Compile vendor specific data */
+            /* Convert DataOffsetField->Value (a hex char * string) to an integer value */
 
-            Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable);
-            if (ACPI_FAILURE (Status))
+            sscanf (DataOffsetField->Value, "%X", &DataOffsetValue);
+
+            DbgPrint (ASL_DEBUG_OUTPUT, "10 Device-Specific Offset: %X Table Offset: %X\n",
+                DataOffsetValue, TableOffset);
+            if (DataOffsetValue != 0)
             {
-                return (Status);
+                /* Compile Device-Specific Data - only if the Data Offset is non-zero */
+
+                Status = DtCompileTable (PFieldList, AcpiDmTableInfoPhat1b, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+
+                DbgPrint (ASL_DEBUG_OUTPUT, "11 Subtable: %p Table Offset: %X\n",
+                    Subtable, TableOffset);
+                if (Subtable)
+                {
+                    DbgPrint (ASL_DEBUG_OUTPUT, "12 Device Specific Offset: "
+                        "%X FieldName \"%s\" SubtableLength %X\n",
+                        DeviceDataLength, DataOffsetField->Name, Subtable->Length);
+
+                    DeviceDataLength += Subtable->Length;
+
+                    ParentTable = DtPeekSubtable ();
+                    DtInsertSubtable (ParentTable, Subtable);
+
+                    PhatHeader->Length += (UINT16) Subtable->Length;
+                }
             }
-            ParentTable = DtPeekSubtable ();
-            DtInsertSubtable (ParentTable, Subtable);
 
-            PhatHeader->Length += (UINT16) Subtable->Length;
+            DtPopSubtable ();
 
+            DbgPrint (ASL_DEBUG_OUTPUT, "13 FieldName: \"%s\" FieldLength: %X Field Value: %s\n",
+                DataOffsetField->Name, DataOffsetField->StringLength, DataOffsetField->Value);
             break;
 
         default:
@@ -1662,7 +1683,7 @@ DtCompilePptt (
         DtInsertSubtable (ParentTable, Subtable);
         PpttHeader->Length += (UINT8)(Subtable->Length);
 
-        /* Compile PPTT subtable additionals */
+        /* Compile PPTT subtable additional */
 
         switch (PpttHeader->Type)
         {
@@ -1783,6 +1804,65 @@ DtCompilePrmt (
 }
 
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileRas2
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile RAS2.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileRas2 (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *ParentTable;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    ACPI_TABLE_RAS2         *Ras2Header;
+    UINT32                  Count = 0;
+
+
+    /* Main table */
+
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoRas2, &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+
+    ParentTable = DtPeekSubtable ();
+    DtInsertSubtable (ParentTable, Subtable);
+
+    Ras2Header = ACPI_CAST_PTR (ACPI_TABLE_RAS2, ParentTable->Buffer);
+
+    /* There is only one type of subtable at this time, no need to decode */
+
+    while (*PFieldList)
+    {
+        /* List of RAS2 PCC descriptors, each 8 bytes */
+
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoRas2PccDesc,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+
+        DtInsertSubtable (ParentTable, Subtable);
+        Count++;
+    }
+
+    Ras2Header->NumPccDescs = (UINT8) Count;
+    return (AE_OK);
+}
+
+
 /******************************************************************************
  *
  * FUNCTION:    DtCompileRgrt
@@ -1831,6 +1911,167 @@ DtCompileRgrt (
 }
 
 
+/******************************************************************************
+ *
+ * FUNCTION:    DtCompileRhct
+ *
+ * PARAMETERS:  List                - Current field list pointer
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Compile RHCT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileRhct (
+    void                    **List)
+{
+    ACPI_STATUS             Status;
+    ACPI_RHCT_NODE_HEADER   *RhctHeader;
+    ACPI_RHCT_HART_INFO     *RhctHartInfo;
+    DT_SUBTABLE             *Subtable;
+    DT_SUBTABLE             *ParentTable;
+    ACPI_DMTABLE_INFO       *InfoTable;
+    DT_FIELD                **PFieldList = (DT_FIELD **) List;
+    DT_FIELD                *SubtableStart;
+    ACPI_TABLE_RHCT         *Table;
+    BOOLEAN                 FirstNode = TRUE;
+
+
+    /* Compile the main table */
+
+    ParentTable = DtPeekSubtable ();
+    Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhct,
+        &Subtable);
+    if (ACPI_FAILURE (Status))
+    {
+        return (Status);
+    }
+    DtInsertSubtable (ParentTable, Subtable);
+    Table = ACPI_CAST_PTR (ACPI_TABLE_RHCT, ParentTable->Buffer);
+    Table->NodeCount = 0;
+    Table->NodeOffset = sizeof (ACPI_TABLE_RHCT);
+
+    while (*PFieldList)
+    {
+        SubtableStart = *PFieldList;
+
+        /* Compile RHCT subtable header */
+
+        Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhctNodeHdr,
+            &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+        DtInsertSubtable (ParentTable, Subtable);
+        RhctHeader = ACPI_CAST_PTR (ACPI_RHCT_NODE_HEADER, Subtable->Buffer);
+
+        DtPushSubtable (Subtable);
+        ParentTable = DtPeekSubtable ();
+        Table->NodeCount++;
+
+        switch (RhctHeader->Type)
+        {
+        case ACPI_RHCT_NODE_TYPE_ISA_STRING:
+
+            InfoTable = AcpiDmTableInfoRhctIsa1;
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_HART_INFO:
+
+            InfoTable = AcpiDmTableInfoRhctHartInfo1;
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_CMO:
+
+            InfoTable = AcpiDmTableInfoRhctCmo1;
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_MMU:
+
+            InfoTable = AcpiDmTableInfoRhctMmu1;
+            break;
+
+        default:
+
+            DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "RHCT");
+            return (AE_ERROR);
+        }
+
+        /* Compile RHCT subtable body */
+
+        Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+        DtInsertSubtable (ParentTable, Subtable);
+        if (FirstNode)
+        {
+            Table->NodeOffset = ACPI_PTR_DIFF(ParentTable->Buffer, Table);
+            FirstNode = FALSE;
+        }
+
+        /* Compile RHCT subtable additionals */
+
+        switch (RhctHeader->Type)
+        {
+        case ACPI_RHCT_NODE_TYPE_ISA_STRING:
+
+            /*
+             * Padding - Variable-length data
+             * Optionally allows the padding of the ISA string to be used
+             * for filling this field.
+             */
+            Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhctIsaPad,
+                                     &Subtable);
+            if (ACPI_FAILURE (Status))
+            {
+                return (Status);
+            }
+            if (Subtable)
+            {
+                DtInsertSubtable (ParentTable, Subtable);
+            }
+            break;
+
+        case ACPI_RHCT_NODE_TYPE_HART_INFO:
+
+            RhctHartInfo = ACPI_CAST_PTR (ACPI_RHCT_HART_INFO,
+                Subtable->Buffer);
+            RhctHartInfo->NumOffsets = 0;
+            while (*PFieldList)
+            {
+                Status = DtCompileTable (PFieldList,
+                    AcpiDmTableInfoRhctHartInfo2, &Subtable);
+                if (ACPI_FAILURE (Status))
+                {
+                    return (Status);
+                }
+                if (!Subtable)
+                {
+                    break;
+                }
+                DtInsertSubtable (ParentTable, Subtable);
+                RhctHartInfo->NumOffsets++;
+            }
+            break;
+
+        default:
+
+            break;
+        }
+
+        DtPopSubtable ();
+        ParentTable = DtPeekSubtable ();
+    }
+
+    return (AE_OK);
+}
+
+
 /******************************************************************************
  *
  * FUNCTION:    DtCompileRsdt
@@ -2451,6 +2692,11 @@ DtCompileSrat (
             InfoTable = AcpiDmTableInfoSrat6;
             break;
 
+        case ACPI_SRAT_TYPE_RINTC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat7;
+            break;
+
         default:
 
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
diff --git a/sys/contrib/dev/acpica/source/compiler/dttemplate.c b/sys/contrib/dev/acpica/source/compiler/dttemplate.c
index 8154abb58e..c3fd33465f 100644
--- a/sys/contrib/dev/acpica/source/compiler/dttemplate.c
+++ b/sys/contrib/dev/acpica/source/compiler/dttemplate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -255,7 +255,7 @@ DtCreateTemplates (
 
     if (AcpiGbl_Optind < 3)
     {
-        fprintf (stderr, "Creating default template: [DSDT]\n");
+        fprintf (stdout, "Creating default template: [DSDT]\n");
         Status = DtCreateOneTemplateFile (ACPI_SIG_DSDT, 0);
         goto Exit;
     }
@@ -411,7 +411,7 @@ DtCreateAllTemplates (
     ACPI_STATUS             Status;
 
 
-    fprintf (stderr, "Creating all supported Template files\n");
+    fprintf (stdout, "Creating all supported Template files\n");
 
     /* Walk entire ACPI table data structure */
 
@@ -421,8 +421,13 @@ DtCreateAllTemplates (
 
         if (TableData->Template)
         {
-            Status = DtCreateOneTemplate (TableData->Signature,
-                0, TableData);
+	    if (ACPI_COMPARE_NAMESEG (TableData->Signature, ACPI_SIG_CDAT))
+		/* Special handling of CDAT */
+                Status = DtCreateOneTemplate (TableData->Signature,
+                    0, NULL);
+	    else
+                Status = DtCreateOneTemplate (TableData->Signature,
+                    0, TableData);
             if (ACPI_FAILURE (Status))
             {
                 return (Status);
@@ -563,7 +568,7 @@ DtCreateOneTemplate (
     }
     else
     {
-        /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP */
+        /* Special ACPI tables - DSDT, SSDT, OSDT, FACS, RSDP, CDAT */
 
         AcpiOsPrintf (" (AML byte code table)\n");
         AcpiOsPrintf (" */\n");
@@ -621,6 +626,11 @@ DtCreateOneTemplate (
             AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
                 TemplateRsdp));
         }
+        else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_CDAT))
+        {
+            AcpiDmDumpCdat (ACPI_CAST_PTR (ACPI_TABLE_HEADER,
+                TemplateCdat));
+        }
         else
         {
             fprintf (stderr,
@@ -632,14 +642,14 @@ DtCreateOneTemplate (
 
     if (TableCount == 0)
     {
-        fprintf (stderr,
+        fprintf (stdout,
             "Created ACPI table template for [%4.4s], "
             "written to \"%s\"\n",
             Signature, DisasmFilename);
     }
     else
     {
-        fprintf (stderr,
+        fprintf (stdout,
             "Created ACPI table templates for [%4.4s] "
             "and %u [SSDT] in same file, written to \"%s\"\n",
             Signature, TableCount, DisasmFilename);
diff --git a/sys/contrib/dev/acpica/source/compiler/dttemplate.h b/sys/contrib/dev/acpica/source/compiler/dttemplate.h
index e9272f3ae8..51a34be5c3 100644
--- a/sys/contrib/dev/acpica/source/compiler/dttemplate.h
+++ b/sys/contrib/dev/acpica/source/compiler/dttemplate.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -157,13 +157,13 @@
 
 const unsigned char TemplateAest[] =
 {
-    0x41,0x45,0x53,0x54,0xCC,0x02,0x00,0x00,  /* 00000000    "AEST...." */
-    0x01,0x2A,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".*INTEL " */
+    0x41,0x45,0x53,0x54,0x90,0x03,0x00,0x00,  /* 00000000    "AEST...." */
+    0x02,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x04,0x06,0x21,0x20,0x00,0x80,0x00,0x00,  /* 00000020    "..! ...." */
+    0x28,0x06,0x23,0x20,0x00,0xA0,0x00,0x00,  /* 00000020    "(.# ...." */
     0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00,  /* 00000028    ",...D..." */
-    0x74,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "t......." */
+    0x94,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
     0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000038    "....gE#." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
@@ -177,76 +177,100 @@ const unsigned char TemplateAest[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
     0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000090    "........" */
     0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78,  /* 00000098    ".......x" */
-    0x56,0x00,0x00,0x00,0x00,0x74,0x00,0x00,  /* 000000A0    "V....t.." */
-    0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00,  /* 000000A8    ",...D..." */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
-    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000B8    "....gE#." */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C8    "........" */
-    0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00,  /* 000000D0    "........" */
-    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000D8    "....gE#." */
-    0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00,  /* 000000E0    "gggg...." */
-    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,  /* 000000E8    "........" */
-    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000F0    "....gE#." */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000F8    "........" */
-    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000100    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000108    "........" */
-    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000110    "........" */
-    0x01,0x60,0x00,0x00,0x2C,0x00,0x00,0x00,  /* 00000118    ".`..,..." */
-    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000120    "0......." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000a0    "....gE#." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000a8    "....gE#." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000b0    "....gE#." */
+    0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78,  /* 000000b8    ".......x" */
+    0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00,  /* 000000c0    "........" */
+    0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00,  /* 000000c8    ",...D..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000d8    "....gE#." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000e0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000e8    "........" */
+    0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00,  /* 000000f0    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000000f8    "....gE#." */
+    0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00,  /* 00000100    "gggg...." */
+    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,  /* 00000108    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000110    "....gE#." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000118    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000120    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000128    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000130    "........" */
-    0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000138    "........" */
-    0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00,  /* 00000140    "gE#....." */
-    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000148    "........" */
+    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000130    "........" */
+    0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78,  /* 00000138    ".......x" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000140    "....gE#." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000148    "....gE#." */
     0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000150    "....gE#." */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000158    "........" */
-    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000160    "........" */
+    0x01,0x80,0x00,0x00,0x2C,0x00,0x00,0x00,  /* 00000158    "....,..." */
+    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000160    "0......." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000168    "........" */
-    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000170    "........" */
-    0x02,0x64,0x00,0x00,0x2C,0x00,0x00,0x00,  /* 00000178    ".d..,..." */
-    0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000180    "4......." */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000188    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000190    "........" */
-    0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000198    "........" */
-    0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55,  /* 000001A0    "gE#.UUUU" */
-    0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00,  /* 000001A8    "ffff...." */
-    0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 000001B0    "........" */
-    0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00,  /* 000001B8    "gE#....." */
-    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000001C0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001C8    "........" */
-    0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01,  /* 000001D0    "........" */
-    0x00,0x00,0x00,0x00,0x03,0x74,0x00,0x00,  /* 000001D8    ".....t.." */
-    0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00,  /* 000001E0    ",...D..." */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001E8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001F0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001F8    "........" */
-    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000200    "....gE#." */
-    0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44,  /* 00000208    "3333DDDD" */
-    0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89,  /* 00000210    ".#4EVgx." */
-    0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xFF,0x55,  /* 00000218    ".......U" */
-    0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000220    "........" */
-    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000228    "....gE#." */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000230    "........" */
-    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000238    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000240    "........" */
-    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000248    "........" */
-    0x04,0x7C,0x00,0x00,0x2C,0x00,0x00,0x00,  /* 00000250    ".|..,..." */
-    0x34,0x00,0x00,0x00,0x64,0x00,0x00,0x00,  /* 00000258    "4...d..." */
-    0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000260    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000170    "........" */
+    0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000178    "........" */
+    0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00,  /* 00000180    "gE#....." */
+    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000188    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000190    "....gE#." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000198    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001a0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001a8    "........" */
+    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 000001b0    "........" */
+    0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78,  /* 000001b8    ".......x" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000001c0    "....gE#." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 000001c8    "....gE#." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001d0    "........" */
+    0x02,0x84,0x00,0x00,0x2C,0x00,0x00,0x00,  /* 000001d8    "....,..." */
+    0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001e0    "4......." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001e8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001f0    "........" */
+    0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 000001f8    "........" */
+    0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55,  /* 00000200    "gE#.UUUU" */
+    0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00,  /* 00000208    "ffff...." */
+    0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000210    "........" */
+    0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00,  /* 00000218    "gE#....." */
+    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000220    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000228    "........" */
+    0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01,  /* 00000230    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000238    "........" */
+    0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89,  /* 00000240    "...x...." */
+    0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89,  /* 00000248    "gE#....." */
+    0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89,  /* 00000250    "gE#....." */
+    0x67,0x45,0x23,0x01,0x03,0x98,0x00,0x00,  /* 00000258    "gE#....." */
+    0x2C,0x00,0x00,0x00,0x48,0x00,0x00,0x00,  /* 00000260    ",...H..." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000268    "........" */
-    0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000270    "........" */
-    0x67,0x45,0x23,0x01,0x03,0x00,0x00,0x00,  /* 00000278    "gE#....." */
-    0x88,0x88,0x77,0x77,0x00,0x00,0x00,0x00,  /* 00000280    "..ww...." */
-    0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 00000288    "........" */
-    0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00,  /* 00000290    "gE#....." */
-    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000298    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000002A0    "........" */
-    0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01,  /* 000002A8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000002B0    "........" */
-    0xBB,0xBB,0xAA,0xAA,0xCC,0x00,0x00,0x00,  /* 000002B8    "........" */
-    0x01,0x00,0x00,0x01,0xEF,0xCD,0xAB,0x78,  /* 000002C0    ".......x" */
-    0x56,0x00,0x00,0x00                       /* 000002C8    "V..."     */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000270    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000278    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000280    "....gE#." */
+    0x33,0x33,0x33,0x33,0x22,0x22,0x22,0x22,  /* 00000288    "3333""""" */
+    0x44,0x44,0x44,0x44,0x12,0x23,0x34,0x45,  /* 00000290    "DDDD.#4E" */
+    0x56,0x67,0x78,0x89,0x9A,0xAB,0xBC,0xCD,  /* 00000298    "Vgx....." */
+    0xDE,0xEF,0xFF,0x55,0x01,0x00,0x00,0x00,  /* 000002a0    "...U...." */
+    0x02,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89,  /* 000002a8    "........" */
+    0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00,  /* 000002b0    "gE#....." */
+    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000002b8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000002c0    "........" */
+    0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01,  /* 000002c8    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000002d0    "........" */
+    0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89,  /* 000002d8    "...x...." */
+    0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89,  /* 000002e0    "gE#....." */
+    0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89,  /* 000002e8    "gE#....." */
+    0x67,0x45,0x23,0x01,0x04,0x9C,0x00,0x00,  /* 000002f0    "gE#....." */
+    0x2C,0x00,0x00,0x00,0x34,0x00,0x00,0x00,  /* 000002f8    ",...4..." */
+    0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000300    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000308    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000310    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000318    "....gE#." */
+    0x03,0x00,0x00,0x00,0x88,0x88,0x77,0x77,  /* 00000320    "......ww" */
+    0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,  /* 00000328    "........" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000330    "....gE#." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000338    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000340    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000348    "........" */
+    0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00,  /* 00000350    "........" */
+    0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78,  /* 00000358    ".......x" */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000360    "....gE#." */
+    0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,  /* 00000368    "....gE#." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000370    "........" */
+    0x00,0x00,0x00,0x00,0xBB,0xBB,0xAA,0xAA,  /* 00000378    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,  /* 00000380    "........" */
+    0xEF,0xCD,0xAB,0x78,0x00,0x00,0x00,0x00,  /* 00000388    "...x...." */
 };
 
 const unsigned char TemplateAgdi[] =
@@ -259,6 +283,29 @@ const unsigned char TemplateAgdi[] =
     0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00   /* 00000028    "...@...." */
 };
 
+const unsigned char TemplateApmt[] =
+{
+    0x41,0x50,0x4D,0x54,0x94,0x00,0x00,0x00,  /* 00000000    "APMT...." */
+    0x00,0x79,0x4E,0x56,0x49,0x44,0x49,0x41,  /* 00000008    ".yNVIDIA" */
+    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
+    0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x17,0x12,0x21,0x20,0x38,0x00,0x04,0x03,  /* 00000020    "..! 8..." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
+    0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    ". ......" */
+    0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    ". ......" */
+    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
+    0x6B,0x03,0x00,0x00,0x38,0x00,0x06,0x03,  /* 00000058    "k...8..." */
+    0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000060    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000068    "........" */
+    0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000070    ".0......" */
+    0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    ".0......" */
+    0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
+    0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000088    "........" */
+    0x6B,0x03,0x00,0x00                       /* 00000090    "k..."     */
+};
+
 const unsigned char TemplateAsf[] =
 {
     0x41,0x53,0x46,0x21,0x72,0x00,0x00,0x00,  /* 00000000    "ASF!r..." */
@@ -278,6 +325,27 @@ const unsigned char TemplateAsf[] =
     0x01,0x00                                 /* 00000070    ".."       */
 };
 
+const unsigned char TemplateAspt[] =
+{
+    0x41,0x53,0x50,0x54,0x88,0x00,0x00,0x00,  /* 00000000    "ASPT...." */
+    0x01,0x2D,0x56,0x52,0x54,0x55,0x41,0x4C,  /* 00000008    "..VRTUAL" */
+    0x4D,0x49,0x43,0x52,0x4F,0x53,0x46,0x54,  /* 00000010    "MICROSFT" */
+    0x01,0x00,0x00,0x00,0x4D,0x53,0x46,0x54,  /* 00000018    "....INTL" */
+    0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,  /* 00000020    " ." ...." */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 00000028    ".. ....." */
+    0x00,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
+    0x04,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
+    0x08,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
+    0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00,  /* 00000048    ".. ....." */
+    0x10,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
+    0x14,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000058    "........" */
+    0x18,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000060    "........" */
+    0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 00000068    ".. ....." */
+    0x20,0x00,0xB0,0xFE,0x00,0x00,0x00,0x00,  /* 00000070    " ......." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
+};
+
 const unsigned char TemplateBdat[] =
 {
     0x42,0x44,0x41,0x54,0x30,0x00,0x00,0x00,  /* 00000000    "BDAT0..." */
@@ -318,25 +386,104 @@ const unsigned char TemplateBoot[] =
     0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00   /* 00000020    "(.. ...." */
 };
 
+const unsigned char TemplateCcel[] =
+{
+    0x43,0x43,0x45,0x4C,0x38,0x00,0x00,0x00,  /* 00000000    "CCEL8..." */
+    0x04,0x2E,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
+    0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x30,0x09,0x21,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "0.! ...." */
+    0xEF,0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,  /* 00000028    "...xV4.." */
+    0x78,0x56,0x34,0x12,0xEF,0xCD,0xAB,0x00   /* 00000030    "xV4....." */
+};
+
 const unsigned char TemplateCedt[] =
 {
-    0x43,0x45,0x44,0x54,0x84,0x00,0x00,0x00,  /* 00000000    "CEDT...." */
-    0x01,0x8B,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
-    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
-    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x05,0x01,0x21,0x20,0x00,0x00,0x20,0x00,  /* 00000020    "..! .. ." */
-    0x33,0x33,0xCD,0xAB,0x01,0x00,0x00,0x00,  /* 00000028    "33......" */
-    0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xD5,  /* 00000030    ".....!C." */
-    0x00,0x00,0x00,0x00,0x45,0x23,0x01,0x00,  /* 00000038    "....E#.." */
+    0x43,0x45,0x44,0x54,0x9c,0x01,0x00,0x00,  /* 00000000    "CEDT...." */
+    0x01,0x87,0x49,0x4e,0x54,0x45,0x4c,0x20,  /* 00000008    "..INTEL " */
+    0x54,0x45,0x4d,0x50,0x4c,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
+    0x00,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c,  /* 00000018    "....INTL" */
+    0x17,0x12,0x21,0x20,0x00,0x00,0x20,0x00,  /* 00000020    "..! .. ." */
+    0x00,0x5e,0xba,0x00,0x00,0x00,0x00,0x00,  /* 00000028    ".^......" */
+    0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,  /* 00000030    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,  /* 00000038    "..... .." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,  /* 00000040    "...... ." */
-    0x44,0x44,0xCD,0xAB,0x01,0x00,0x00,0x00,  /* 00000048    "DD......" */
-    0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xA5,  /* 00000050    ".....!C." */
-    0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00,  /* 00000058    "....E#.." */
+    0x01,0x5e,0xba,0x00,0x00,0x00,0x00,0x00,  /* 00000048    ".^......" */
+    0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,  /* 00000050    "..... .." */
+    0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,  /* 00000058    "..... .." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,  /* 00000060    "...... ." */
-    0x55,0x55,0xCD,0xAB,0x01,0x00,0x00,0x00,  /* 00000068    "UU......" */
-    0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xB5,  /* 00000070    ".....!C." */
-    0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00,  /* 00000078    "....E#.." */
-    0x00,0x00,0x00,0x00                       /* 00000080    "...."     */
+    0x02,0x5e,0xba,0x00,0x00,0x00,0x00,0x00,  /* 00000068    ".^......" */
+    0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,  /* 00000070    ".....0.." */
+    0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,  /* 00000078    "..... .." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,  /* 00000080    "...... ." */
+    0x03,0x5e,0xba,0x00,0x00,0x00,0x00,0x00,  /* 00000088    ".^......" */
+    0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,  /* 00000090    ".....@.." */
+    0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,  /* 00000098    "..... .." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x28,0x00,  /* 000000a0    "......(." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a8    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000b0    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000b8    "........" */
+    0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00,  /* 000000c0    "........" */
+    0x00,0x5e,0xba,0x00,0x01,0x00,0x28,0x00,  /* 000000c8    ".^....(." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d8    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000e0    "........" */
+    0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00,  /* 000000e8    "........" */
+    0x01,0x5e,0xba,0x00,0x01,0x00,0x28,0x00,  /* 000000f0    ".^....(." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000f8    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000100    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000108    "........" */
+    0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00,  /* 00000110    "........" */
+    0x02,0x5e,0xba,0x00,0x01,0x00,0x28,0x00,  /* 00000118    ".^....(." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000120    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000128    "........" */
+    0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000130    "........" */
+    0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00,  /* 00000138    "........" */
+    0x03,0x5e,0xba,0x00,0x01,0x00,0x2c,0x00,  /* 00000140    ".^....,." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000148    "........" */
+    0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000150    "........" */
+    0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000158    "........" */
+    0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00,  /* 00000160    "........" */
+    0x00,0x5e,0xba,0x00,0x01,0x5e,0xba,0x00,  /* 00000160    ".^...^.." */
+    0x01,0x00,0x2c,0x00,0x00,0x00,0x00,0x00,  /* 00000170    "..,....." */
+    0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,  /* 00000178    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,  /* 00000180    "........" */
+    0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,  /* 00000188    "........" */
+    0x0a,0x00,0x01,0x00,0x02,0x5e,0xba,0x00,  /* 00000190    ".....^.." */
+    0x03,0x5e,0xba,0x00                       /* 00000198    ".^.."     */
+};
+
+const unsigned char TemplateCdat[] =
+{
+    0xE4,0x00,0x00,0x00,0x01,0x0C,0x00,0x00,  /* 00000000    "........" */
+    0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,  /* 00000008    "........" */
+    0x03,0x00,0x08,0x00,0x04,0x56,0x00,0x00,  /* 00000010    ".....V.." */
+    0x00,0x00,0x18,0x00,0xEF,0x01,0x00,0x00,  /* 00000018    "........" */
+    0x89,0x67,0x45,0x23,0x01,0x00,0x00,0x00,  /* 00000020    ".gE#...." */
+    0xAB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x03,0x00,0x08,0x00,0x04,0x56,0x00,0x00,  /* 00000030    ".....V.." */
+    0x01,0x00,0x18,0x00,0x44,0x04,0x64,0x00,  /* 00000038    "....D.d." */
+    0xCD,0xAB,0x89,0x67,0x45,0x23,0x01,0x00,  /* 00000040    "...gE#.." */
+    0x33,0x22,0x44,0x33,0x55,0x44,0x00,0x00,  /* 00000048    "3"D3UD.." */
+    0x02,0x00,0x14,0x00,0x99,0x00,0x00,0x00,  /* 00000050    "........" */
+    0x00,0x00,0x00,0x00,0x78,0x56,0x34,0x12,  /* 00000058    "....xV4." */
+    0x55,0x55,0x44,0x44,0x04,0x00,0x18,0x00,  /* 00000060    "UUDD...." */
+    0x88,0x32,0x00,0x00,0x77,0x77,0x77,0x77,  /* 00000068    ".2..wwww" */
+    0x11,0x11,0x11,0x11,0x88,0x88,0x88,0x88,  /* 00000070    "........" */
+    0x22,0x22,0x22,0x22,0x05,0x00,0x20,0x00,  /* 00000078    """"".. ." */
+    0x04,0x00,0x00,0x00,0x44,0x44,0x44,0x44,  /* 00000080    "....DDDD" */
+    0x33,0x33,0x33,0x33,0x44,0x44,0x55,0x55,  /* 00000088    "3333DDUU" */
+    0x66,0x66,0x00,0x00,0x77,0x77,0x88,0x88,  /* 00000090    "ff..ww.." */
+    0x99,0x99,0x00,0x00,0x05,0x00,0x18,0x00,  /* 00000098    "........" */
+    0x04,0x00,0x00,0x00,0x22,0x22,0x22,0x22,  /* 000000A0    "....""""" */
+    0x11,0x11,0x11,0x11,0x34,0x12,0x56,0x78,  /* 000000A8    "....4.Vx" */
+    0x11,0x11,0x00,0x00,0x05,0x00,0x30,0x00,  /* 000000B0    "......0." */
+    0x08,0x00,0x00,0x00,0x66,0x66,0x66,0x66,  /* 000000B8    "....ffff" */
+    0x55,0x55,0x55,0x55,0x44,0x44,0x55,0x55,  /* 000000C0    "UUUUDDUU" */
+    0x66,0x66,0x00,0x00,0x77,0x77,0x88,0x88,  /* 000000C8    "ff..ww.." */
+    0x99,0x99,0x00,0x00,0xAA,0xAA,0xBB,0xBB,  /* 000000D0    "........" */
+    0xCC,0xCC,0x00,0x00,0x55,0x55,0x44,0x44,  /* 000000D8    "....UUDD" */
+    0x33,0x33,0x00,0x00                       /* 000000E0    "33.."     */
 };
 
 const unsigned char TemplateCpep[] =
@@ -436,11 +583,11 @@ const unsigned char TemplateDbgp[] =
 
 const unsigned char TemplateDmar[] =
 {
-    0x44,0x4D,0x41,0x52,0x8C,0x00,0x00,0x00,  /* 00000000    "DMAR...." */
-    0x01,0x03,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x44,0x4D,0x41,0x52,0xAC,0x00,0x00,0x00,  /* 00000000    "DMAR...." */
+    0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x17,0x05,0x13,0x20,0x2F,0x01,0x00,0x00,  /* 00000020    "... /..." */
+    0x17,0x12,0x21,0x20,0x2F,0x01,0x00,0x00,  /* 00000020    "..! /..." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
     0x00,0x00,0x18,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -453,7 +600,11 @@ const unsigned char TemplateDmar[] =
     0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x03,  /* 00000070    "........" */
     0x03,0x00,0x14,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
-    0x00,0x00,0x00,0x00                       /* 00000088    "...."     */
+    0x00,0x00,0x00,0x00,0x05,0x00,0x10,0x00,  /* 00000088    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00,  /* 00000090    "........" */
+    0x00,0x00,0x00,0x02,0x06,0x00,0x10,0x00,  /* 00000098    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00,  /* 000000A0    "........" */
+    0x00,0x00,0x00,0x02                       /* 000000A8    "...."     */
 };
 
 const unsigned char TemplateDrtm[] =
@@ -534,6 +685,211 @@ const unsigned char TemplateEinj[] =
     0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF   /* 00000128    "........" */
 };
 
+const unsigned char TemplateErdt[] =
+{
+    0x45,0x52,0x44,0x54,0x44,0x06,0x00,0x00,  /* 00000000    "ERDTD..." */
+    0x01,0x78,0x49,0x4e,0x54,0x45,0x4c,0x00,  /* 00000008    ".xINTEL." */
+    0x49,0x4e,0x54,0x45,0x4c,0x20,0x49,0x44,  /* 00000010    "INTEL ID" */
+    0x02,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c,  /* 00000018    "....INTL" */
+    0x28,0x06,0x23,0x20,0x0f,0x00,0x00,0x00,  /* 00000020    "(.# ...." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
+    0x00,0x00,0xd2,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x0f,0x01,0x00,0x00,  /* 00000050    "........" */
+    0x00,0x00,0xfc,0xf7,0xff,0x1f,0x00,0x00,  /* 00000058    "........" */
+    0x01,0x00,0x01,0x00,0x18,0x00,0x00,0x00,  /* 00000060    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,  /* 00000068    "........" */
+    0x00,0x00,0x08,0x00,0x00,0x00,0x0a,0x00,  /* 00000070    "........" */
+    0x00,0x00,0x03,0x00,0x30,0x00,0x00,0x00,  /* 00000078    "....0..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 00000080    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
+    0x00,0x00,0x00,0x10,0xfb,0xf7,0xff,0x1f,  /* 00000090    "........" */
+    0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,  /* 00000098    "........" */
+    0x00,0x02,0x00,0x10,0x01,0x00,0x00,0x00,  /* 000000a0    "........" */
+    0x00,0x00,0x04,0x00,0x38,0x00,0x00,0x00,  /* 000000a8    "....8..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 000000b0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000b8    "........" */
+    0x00,0x00,0x00,0x80,0xfc,0xf7,0xff,0x1f,  /* 000000c0    "........" */
+    0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,  /* 000000c8    "........" */
+    0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d8    "........" */
+    0x00,0x00,0x05,0x00,0x30,0x00,0x00,0x00,  /* 000000e0    "....0..." */
+    0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000e8    "........" */
+    0x00,0x00,0x00,0x10,0xfc,0xf7,0xff,0x1f,  /* 000000f0    "........" */
+    0x00,0x00,0x00,0x30,0xfc,0xf7,0xff,0x1f,  /* 000000f8    "...0...." */
+    0x00,0x00,0x00,0x20,0xfc,0xf7,0xff,0x1f,  /* 00000100    "... ...." */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,  /* 00000108    "........" */
+    0x00,0x00,0x00,0x00,0xd2,0x00,0x01,0x00,  /* 00000110    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000118    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x0f,0x01,  /* 00000120    "........" */
+    0x00,0x00,0x00,0x00,0xec,0xf7,0xff,0x1f,  /* 00000128    "........" */
+    0x00,0x00,0x01,0x00,0x01,0x00,0x18,0x00,  /* 00000130    "........" */
+    0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,  /* 00000138    "........" */
+    0x02,0x01,0x00,0x00,0x08,0x01,0x00,0x00,  /* 00000140    "........" */
+    0x0a,0x01,0x00,0x00,0x03,0x00,0x30,0x00,  /* 00000148    "......0." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000150    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000158    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x10,0xeb,0xf7,  /* 00000160    "........" */
+    0xff,0x1f,0x00,0x00,0x04,0x00,0x00,0x00,  /* 00000168    "........" */
+    0x08,0x00,0x00,0x02,0x00,0x10,0x01,0x00,  /* 00000170    "........" */
+    0x00,0x00,0x00,0x00,0x04,0x00,0x38,0x00,  /* 00000178    "......8." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000180    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000188    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x80,0xec,0xf7,  /* 00000190    "........" */
+    0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,  /* 00000198    "........" */
+    0x18,0x00,0x10,0x01,0x00,0x00,0x00,0x00,  /* 000001a0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001a8    "........" */
+    0x00,0x00,0x00,0x00,0x05,0x00,0x30,0x00,  /* 000001b0    "......0." */
+    0x00,0x00,0x07,0x00,0x01,0x00,0x00,0x00,  /* 000001b8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x10,0xec,0xf7,  /* 000001c0    "........" */
+    0xff,0x1f,0x00,0x00,0x00,0x30,0xec,0xf7,  /* 000001c8    ".....0.." */
+    0xff,0x1f,0x00,0x00,0x00,0x20,0xec,0xf7,  /* 000001d0    "..... .." */
+    0xff,0x1f,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000001d8    "........" */
+    0x08,0x00,0x00,0x00,0x00,0x00,0xd2,0x00,  /* 000001e0    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001e8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,  /* 000001f0    "........" */
+    0x0f,0x01,0x00,0x00,0x00,0x00,0xdc,0xf7,  /* 000001f8    "........" */
+    0xff,0x1f,0x00,0x00,0x01,0x00,0x01,0x00,  /* 00000200    "........" */
+    0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x02,  /* 00000208    "........" */
+    0x00,0x00,0x02,0x02,0x00,0x00,0x08,0x02,  /* 00000210    "........" */
+    0x00,0x00,0x0a,0x02,0x00,0x00,0x03,0x00,  /* 00000218    "........" */
+    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000220    "0......." */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000228    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,  /* 00000230    "........" */
+    0xdb,0xf7,0xff,0x1f,0x00,0x00,0x04,0x00,  /* 00000238    "........" */
+    0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x10,  /* 00000240    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00,  /* 00000248    "........" */
+    0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000250    "8......." */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000258    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,  /* 00000260    "........" */
+    0xdc,0xf7,0xff,0x1f,0x00,0x00,0x10,0x00,  /* 00000268    "........" */
+    0x00,0x00,0x18,0x00,0x10,0x01,0x00,0x00,  /* 00000270    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000278    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,  /* 00000280    "........" */
+    0x30,0x00,0x00,0x00,0x07,0x00,0x01,0x00,  /* 00000288    "0......." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,  /* 00000290    "........" */
+    0xdc,0xf7,0xff,0x1f,0x00,0x00,0x00,0x30,  /* 00000298    ".......0" */
+    0xdc,0xf7,0xff,0x1f,0x00,0x00,0x00,0x20,  /* 000002a0    "....... " */
+    0xdc,0xf7,0xff,0x1f,0x00,0x00,0x01,0x00,  /* 000002a8    "........" */
+    0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,  /* 000002b0    "........" */
+    0xd2,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000002b8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000002c0    "........" */
+    0x03,0x00,0x0f,0x01,0x00,0x00,0x00,0x00,  /* 000002c8    "........" */
+    0xcc,0xf7,0xff,0x1f,0x00,0x00,0x01,0x00,  /* 000002d0    "........" */
+    0x01,0x00,0x18,0x00,0x00,0x00,0x03,0x00,  /* 000002d8    "........" */
+    0x00,0x03,0x00,0x00,0x02,0x03,0x00,0x00,  /* 000002e0    "........" */
+    0x08,0x03,0x00,0x00,0x0a,0x03,0x00,0x00,  /* 000002e8    "........" */
+    0x03,0x00,0x30,0x00,0x00,0x00,0x00,0x00,  /* 000002f0    "..0....." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000002f8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000300    "........" */
+    0x00,0x10,0xcb,0xf7,0xff,0x1f,0x00,0x00,  /* 00000308    "........" */
+    0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x02,  /* 00000310    "........" */
+    0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000318    "........" */
+    0x04,0x00,0x38,0x00,0x00,0x00,0x00,0x00,  /* 00000320    "..8....." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000328    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000330    "........" */
+    0x00,0x80,0xcc,0xf7,0xff,0x1f,0x00,0x00,  /* 00000338    "........" */
+    0x10,0x00,0x00,0x00,0x18,0x00,0x10,0x01,  /* 00000340    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000348    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000350    "........" */
+    0x05,0x00,0x30,0x00,0x00,0x00,0x07,0x00,  /* 00000358    "..0....." */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000360    "........" */
+    0x00,0x10,0xcc,0xf7,0xff,0x1f,0x00,0x00,  /* 00000368    "........" */
+    0x00,0x30,0xcc,0xf7,0xff,0x1f,0x00,0x00,  /* 00000370    ".0......" */
+    0x00,0x20,0xcc,0xf7,0xff,0x1f,0x00,0x00,  /* 00000378    ". ......" */
+    0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,  /* 00000380    "........" */
+    0x00,0x00,0x92,0x01,0x02,0x00,0x10,0x00,  /* 00000388    "........" */
+    0x0b,0x08,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000390    "........" */
+    0x00,0x00,0x10,0x00,0x7f,0x00,0x00,0x00,  /* 00000398    "........" */
+    0x00,0xb0,0xb8,0xf6,0xff,0x1f,0x00,0x00,  /* 000003a0    "........" */
+    0x01,0x00,0x02,0x00,0xd8,0x00,0x00,0x00,  /* 000003a8    "........" */
+    0x10,0x00,0x01,0x08,0x00,0x00,0x00,0x00,  /* 000003b0    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,  /* 000003b8    "........" */
+    0x00,0x04,0x01,0x08,0x00,0x00,0x00,0x00,  /* 000003c0    "........" */
+    0x02,0x00,0x01,0x08,0x00,0x00,0x00,0x00,  /* 000003c8    "........" */
+    0x02,0x01,0x01,0x08,0x00,0x00,0x00,0x00,  /* 000003d0    "........" */
+    0x03,0x00,0x02,0x08,0x00,0x00,0x00,0x00,  /* 000003d8    "........" */
+    0x04,0x00,0x01,0x0a,0x00,0x00,0x00,0x00,  /* 000003e0    "........" */
+    0x04,0x00,0x00,0x00,0x02,0x08,0x00,0x00,  /* 000003e8    "........" */
+    0x00,0x00,0x05,0x00,0x01,0x0a,0x00,0x00,  /* 000003f0    "........" */
+    0x00,0x00,0x05,0x00,0x00,0x00,0x02,0x08,  /* 000003f8    "........" */
+    0x00,0x00,0x00,0x00,0x06,0x00,0x01,0x0a,  /* 00000400    "........" */
+    0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,  /* 00000408    "........" */
+    0x02,0x08,0x00,0x00,0x00,0x00,0x07,0x00,  /* 00000410    "........" */
+    0x01,0x0a,0x00,0x00,0x00,0x00,0x07,0x00,  /* 00000418    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,  /* 00000420    "........" */
+    0x1f,0x00,0x01,0x08,0x00,0x00,0x00,0x00,  /* 00000428    "........" */
+    0x1f,0x04,0x01,0x08,0x00,0x00,0x00,0x00,  /* 00000430    "........" */
+    0x1f,0x05,0x01,0x08,0x00,0x00,0x00,0x0d,  /* 00000438    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x0e,  /* 00000440    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x0f,  /* 00000448    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x10,  /* 00000450    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x10,  /* 00000458    "........" */
+    0x00,0x04,0x01,0x08,0x00,0x00,0x00,0x60,  /* 00000460    ".......`" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x60,  /* 00000468    ".......`" */
+    0x00,0x04,0x01,0x08,0x00,0x00,0x00,0xb0,  /* 00000470    "........" */
+    0x00,0x00,0x01,0x08,0x00,0x00,0x00,0xb0,  /* 00000478    "........" */
+    0x00,0x04,0x07,0x00,0x30,0x00,0x00,0x00,  /* 00000480    "....0..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 00000488    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000490    "........" */
+    0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f,  /* 00000498    "........" */
+    0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x05,  /* 000004a0    "........" */
+    0x08,0x00,0xf8,0xff,0x07,0x00,0x00,0x00,  /* 000004a8    "........" */
+    0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,  /* 000004b0    "....@..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 000004b8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000004c0    "........" */
+    0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f,  /* 000004c8    "........" */
+    0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x03,  /* 000004d0    "........" */
+    0x00,0x04,0x08,0x00,0x08,0x00,0x00,0x00,  /* 000004d8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x28,0xf8,0xff,  /* 000004e0    ".....(.." */
+    0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000004e8    "........" */
+    0x00,0x00,0x0a,0x00,0x28,0x00,0x00,0x00,  /* 000004f0    "....(..." */
+    0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,  /* 000004f8    "........" */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000500    "........" */
+    0x00,0x00,0x00,0xb0,0xb8,0xf6,0xff,0x1f,  /* 00000508    "........" */
+    0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x02,  /* 00000510    "........" */
+    0x10,0x00,0x00,0x00,0x2a,0x01,0x02,0x00,  /* 00000518    "....*..." */
+    0x10,0x00,0x0b,0x08,0x00,0x00,0x00,0x00,  /* 00000520    "........" */
+    0x00,0x00,0x00,0x00,0x11,0x00,0x7f,0x00,  /* 00000528    "........" */
+    0x00,0x00,0x00,0xb0,0x38,0xf6,0xff,0x1f,  /* 00000530    "....8..." */
+    0x00,0x00,0x01,0x00,0x02,0x00,0x70,0x00,  /* 00000538    "......p." */
+    0x00,0x00,0x11,0x00,0x01,0x08,0x01,0x00,  /* 00000540    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000548    "........" */
+    0x00,0x00,0x00,0x04,0x01,0x08,0x01,0x00,  /* 00000550    "........" */
+    0x00,0x00,0x02,0x00,0x01,0x08,0x01,0x00,  /* 00000558    "........" */
+    0x00,0x00,0x02,0x01,0x01,0x08,0x01,0x00,  /* 00000560    "........" */
+    0x00,0x0d,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000568    "........" */
+    0x00,0x0e,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000570    "........" */
+    0x00,0x0f,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000578    "........" */
+    0x00,0x10,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000580    "........" */
+    0x00,0x10,0x00,0x04,0x01,0x08,0x01,0x00,  /* 00000588    "........" */
+    0x00,0x60,0x00,0x00,0x01,0x08,0x01,0x00,  /* 00000590    ".`......" */
+    0x00,0x60,0x00,0x04,0x01,0x08,0x01,0x00,  /* 00000598    ".`......" */
+    0x00,0xb0,0x00,0x00,0x01,0x08,0x01,0x00,  /* 000005a0    "........" */
+    0x00,0xb0,0x00,0x04,0x07,0x00,0x30,0x00,  /* 000005a8    "......0." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000005b0    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000005b8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6,  /* 000005c0    "......8." */
+    0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,  /* 000005c8    "........" */
+    0x00,0x05,0x08,0x00,0xf8,0xff,0x07,0x00,  /* 000005d0    "........" */
+    0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,  /* 000005d8    "......@." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000005e0    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000005e8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6,  /* 000005f0    "......8." */
+    0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,  /* 000005f8    "........" */
+    0x00,0x03,0x00,0x04,0x08,0x00,0x08,0x00,  /* 00000600    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,  /* 00000608    ".......(" */
+    0xf8,0xff,0x07,0x00,0x00,0x00,0x00,0x00,  /* 00000610    "........" */
+    0x00,0x00,0x00,0x00,0x0a,0x00,0x28,0x00,  /* 00000618    "......(." */
+    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000620    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000628    "........" */
+    0x00,0x00,0x00,0x00,0x00,0xb0,0x38,0xf6,  /* 00000630    "......8." */
+    0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,  /* 00000638    "........" */
+    0x00,0x02,0x10,0x00,                      /* 00000640    "...."     */
+};
+
 const unsigned char TemplateErst[] =
 {
     0x45,0x52,0x53,0x54,0x30,0x02,0x00,0x00,  /* 00000000    "ERST0..." */
@@ -833,10 +1189,10 @@ const unsigned char TemplateHpet[] =
 const unsigned char TemplateIort[] =
 {
     0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00,  /* 00000000    "IORT<..." */
-    0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x05,0xCB,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00,  /* 00000020    "..! ...." */
+    0x17,0x12,0x21,0x20,0x07,0x00,0x00,0x00,  /* 00000020    "..! ...." */
     0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "4......." */
     0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01,  /* 00000030    "IORT...." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -848,7 +1204,7 @@ const unsigned char TemplateIort[] =
     0x00,0x5C,0x5F,0x53,0x42,0x2E,0x50,0x43,  /* 00000068    ".\_SB.PC" */
     0x49,0x30,0x2E,0x44,0x45,0x56,0x30,0x00,  /* 00000070    "I0.DEV0." */
     0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00,  /* 00000078    "IORT<..." */
-    0x03,0xF2,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000080    "..INTEL " */
+    0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000080    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000088    "Template" */
     0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000090    "....INTL" */
     0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00,  /* 00000098    "..! ...." */
@@ -857,7 +1213,7 @@ const unsigned char TemplateIort[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B8    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
-    0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x03,  /* 000000C8    ".....8.." */
+    0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x04,  /* 000000C8    ".....8.." */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000D0    "........" */
     0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D8    "$......." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E0    "........" */
@@ -895,7 +1251,7 @@ const unsigned char TemplateIort[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001E0    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001E8    "........" */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000001F0    "........" */
-    0x06,0x44,0x00,0x01,0x00,0x00,0x00,0x00,  /* 000001F8    ".D......" */
+    0x06,0x44,0x00,0x03,0x00,0x00,0x00,0x00,  /* 000001F8    ".D......" */
     0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,  /* 00000200    "....0..." */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000208    "........" */
     0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000210    "........" */
@@ -903,7 +1259,7 @@ const unsigned char TemplateIort[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000220    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000228    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000230    "........" */
-    0x01,0x00,0x00,0x00                       /* 00000238    "...."     */
+    0x00,0x00,0x00,0x00                       /* 00000238    "...."     */
 };
 
 const unsigned char TemplateIvrs[] =
@@ -1003,11 +1359,11 @@ const unsigned char TemplateLpit[] =
 
 const unsigned char TemplateMadt[] =
 {
-    0x41,0x50,0x49,0x43,0x6A,0x01,0x00,0x00,  /* 00000000    "APICj..." */
-    0x05,0x9D,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x41,0x50,0x49,0x43,0x62,0x02,0x00,0x00,  /* 00000000    "APICb..." */
+    0x07,0x44,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".DINTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "..  ...." */
+    0x28,0x06,0x23,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "(.# ...." */
     0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 00000028    "........" */
     0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -1025,7 +1381,7 @@ const unsigned char TemplateMadt[] =
     0x00,0x00,0x09,0x10,0x00,0x00,0x00,0x00,  /* 00000098    "........" */
     0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
     0x00,0x00,0x0A,0x0C,0x05,0x00,0x00,0x00,  /* 000000A8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x50,  /* 000000B0    ".......P" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x52,  /* 000000B0    ".......R" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B8    "........" */
     0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C8    "........" */
@@ -1036,19 +1392,50 @@ const unsigned char TemplateMadt[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F0    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F8    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,  /* 00000100    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000108    "........" */
+    0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000108    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000110    "........" */
-    0x00,0x00,0x01,0x00,0x00,0x00,0x0D,0x18,  /* 00000118    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000120    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 00000128    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x10,  /* 00000130    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000138    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x14,  /* 00000140    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000148    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000118    "........" */
+    0x0D,0x18,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000120    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000128    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000130    "........" */
+    0x0E,0x10,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000138    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000140    "........" */
+    0x0F,0x14,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000148    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000150    "........" */
-    0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,  /* 00000158    "........" */
+    0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,  /* 00000158    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000160    "........" */
-    0x00,0x00                                 /* 00000168    ".."       */
+    0x00,0x00,0x00,0x00,0x11,0x0F,0x01,0x01,  /* 00000168    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,  /* 00000170    "........" */
+    0x00,0x00,0x00,0x12,0x17,0x01,0x00,0x14,  /* 00000178    "........" */
+    0xE0,0x1F,0x00,0x00,0x00,0x00,0x80,0x00,  /* 00000180    "........" */
+    0x02,0x03,0xFF,0xFF,0xFF,0x00,0x00,0x00,  /* 00000188    "........" */
+    0x00,0xFF,0x13,0x15,0x01,0x80,0x00,0x00,  /* 00000190    "........" */
+    0xFB,0xFD,0x0E,0x00,0x00,0x40,0x00,0x00,  /* 00000198    ".....@.." */
+    0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x14,  /* 000001A0    "........" */
+    0x0D,0x01,0x03,0x00,0x00,0x00,0x00,0x00,  /* 000001A8    "........" */
+    0x00,0x00,0x00,0x00,0x15,0x13,0x01,0x00,  /* 000001B0    "........" */
+    0x00,0xF0,0x2F,0x00,0x00,0x00,0x00,0x40,  /* 000001B8    "../....@" */
+    0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x16,  /* 000001C0    "........" */
+    0x11,0x01,0x00,0x00,0x00,0x10,0x00,0x00,  /* 000001C8    "........" */
+    0x00,0x00,0x00,0x10,0x00,0x00,0x40,0x00,  /* 000001D0    "......@." */
+    0x17,0x0E,0x01,0x00,0x20,0x00,0x10,0x00,  /* 000001D8    ".... ..." */
+    0x00,0x00,0x00,0x00,0x10,0x13,0x18,0x24,  /* 000001E0    ".......$" */
+    0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000001E8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001F0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001F8    "........" */
+    0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x10,  /* 00000200    ".(......" */
+    0x00,0x00,0x19,0x10,0x01,0x00,0x00,0x00,  /* 00000208    "........" */
+    0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,  /* 00000210    "........" */
+    0x00,0x18,0x1A,0x24,0x01,0x00,0x00,0x00,  /* 00000218    "...$...." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000220    "........" */
+    0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,  /* 00000228    "....`..." */
+    0x00,0x00,0x00,0x00,0x00,0x0D,0x00,0x00,  /* 00000230    "........" */
+    0x00,0x00,0x00,0x80,0x00,0x00,0x1B,0x24,  /* 00000238    ".......$" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000240    "........" */
+    0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,  /* 00000248    "..`....." */
+    0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,  /* 00000250    "....`..." */
+    0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000258    "........" */
+    0x00,0x00                                 /* 00000260    ".."       */
 };
 
 const unsigned char TemplateMcfg[] =
@@ -1093,6 +1480,42 @@ const unsigned char TemplateMsdm[] =
     0x22,0x23,0x24,0x25                       /* 00000060    ""#$%"     */
 };
 
+const unsigned char TemplateMpam[] =
+{
+    0x4D,0x50,0x41,0x4D,0xFC,0x00,0x00,0x00,  /* 00000000    "MPAM...." */
+    0x02,0x35,0x48,0x49,0x53,0x49,0x20,0x20,  /* 00000008    ".5HISI  " */
+    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
+    0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x28,0x06,0x23,0x20,0x60,0x00,0x00,0x00,  /* 00000020    "(.# `..." */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,  /* 00000028    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 00000030    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
+    0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000058    "2......." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    "........" */
+    0x01,0x00,0x00,0x00,0x11,0x00,0x00,0x00,  /* 00000068    "........" */
+    0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x00,  /* 00000070    ".... ..." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
+    0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,  /* 00000080    "....x..." */
+    0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,  /* 00000088    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,  /* 00000090    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000098    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
+    0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B8    "2......." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
+    0x02,0x00,0x00,0x00,0x12,0x00,0x00,0x00,  /* 000000C8    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000D0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
+    0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,  /* 000000E0    "........" */
+    0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 000000E8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F0    "........" */
+    0x00,0x00,0x00,0x00                       /* 000000F8    "...."     */
+};
+
 const unsigned char TemplateMpst[] =
 {
     0x4D,0x50,0x53,0x54,0xB6,0x00,0x00,0x00,  /* 00000000    "MPST...." */
@@ -1120,6 +1543,38 @@ const unsigned char TemplateMpst[] =
     0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B0    "......"   */
 };
 
+const unsigned char TemplateMrrm[] =
+{
+    0x4D,0x52,0x52,0x4D,0xE0,0x00,0x00,0x00,  /* 00000000    "MRRM...." */
+    0x01,0x6F,0x49,0x4E,0x54,0x45,0x4C,0x00,  /* 00000008    ".oINTEL." */
+    0x49,0x4E,0x54,0x45,0x4C,0x20,0x49,0x44,  /* 00000010    "INTEL ID" */
+    0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x28,0x06,0x23,0x20,0x02,0x00,0x00,0x00,  /* 00000020    "(.# ...." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 00000040    ".. ....." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000058    "........" */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 00000060    ".. ....." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000068    "........" */
+    0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,  /* 00000070    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 00000080    ".. ....." */
+    0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,  /* 00000088    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,  /* 00000090    "........" */
+    0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000098    "........" */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    ".. ....." */
+    0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,  /* 000000A8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,  /* 000000B0    "........" */
+    0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000B8    "........" */
+    0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    ".. ....." */
+    0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 000000C8    "........" */
+    0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,  /* 000000D0    "........" */
+    0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00   /* 000000D8    "........" */
+};
+
 const unsigned char TemplateMsct[] =
 {
     0x4D,0x53,0x43,0x54,0x90,0x00,0x00,0x00,  /* 00000000    "MSCT...." */
@@ -1195,78 +1650,6 @@ const unsigned char TemplateNfit[] =
     0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000180    "........" */
 };
 
-const unsigned char TemplateNhlt[] =
-{
-    0x4E,0x48,0x4C,0x54,0x1E,0x02,0x00,0x00,  /* 00000000    "NHLT...." */
-    0x01,0xF7,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
-    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
-    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x30,0x09,0x21,0x20,0x04,0xAD,0x00,0x00,  /* 00000020    "0.! ...." */
-    0x00,0x02,0x06,0x07,0x00,0x30,0xAE,0x09,  /* 00000028    ".....0.." */
-    0x00,0x0A,0x00,0x00,0x00,0x02,0x03,0x0D,  /* 00000030    "........" */
-    0x38,0x00,0x00,0x00,0xCC,0x01,0x1F,0x02,  /* 00000038    "8......." */
-    0x04,0x00,0x13,0x00,0x09,0x00,0x11,0x00,  /* 00000040    "........" */
-    0x04,0x20,0x07,0x00,0x09,0x00,0x18,0x00,  /* 00000048    ". ......" */
-    0x22,0x00,0x11,0x00,0x15,0x00,0x05,0x03,  /* 00000050    ""......." */
-    0x13,0x00,0x09,0x00,0x11,0x00,0x04,0x20,  /* 00000058    "....... " */
-    0x07,0x00,0x09,0x00,0x18,0x00,0x22,0x00,  /* 00000060    "......"." */
-    0x11,0x00,0x15,0x00,0xAA,0xAA,0x99,0x99,  /* 00000068    "........" */
-    0x78,0x56,0x34,0x12,0x02,0xFE,0xFF,0x78,  /* 00000070    "xV4....x" */
-    0x56,0x44,0x33,0x00,0x00,0x66,0x55,0x00,  /* 00000078    "VD3..fU." */
-    0x00,0x00,0x80,0x16,0x00,0x32,0x00,0x04,  /* 00000080    ".....2.." */
-    0x00,0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,  /* 00000088    ".....n.." */
-    0xA6,0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,  /* 00000090    "..l.E..{" */
-    0x5D,0xCE,0x24,0xC5,0x53,0x02,0x00,0x00,  /* 00000098    "].$.S..." */
-    0x00,0x30,0x40,0xFE,0xFF,0x78,0x56,0x44,  /* 000000A0    ".0@..xVD" */
-    0x33,0x00,0x00,0x66,0x55,0x00,0x00,0x00,  /* 000000A8    "3..fU..." */
-    0x80,0x16,0x00,0x32,0x00,0x04,0x00,0x99,  /* 000000B0    "...2...." */
-    0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6,0xEB,  /* 000000B8    "...n...." */
-    0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D,0xCE,  /* 000000C0    "l.E..{]." */
-    0x24,0xC5,0x53,0x03,0x00,0x00,0x00,0x50,  /* 000000C8    "$.S....P" */
-    0x60,0x70,0x48,0x00,0x00,0x00,0x05,0x06,  /* 000000D0    "`pH....." */
-    0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00,  /* 000000D8    "..4....." */
-    0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00,  /* 000000E0    "........" */
-    0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56,  /* 000000E8    "......xV" */
-    0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00,  /* 000000F0    "D3..fU.." */
-    0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00,  /* 000000F8    "....2..." */
-    0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6,  /* 00000100    "....n..." */
-    0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D,  /* 00000108    ".l.E..{]" */
-    0xCE,0x24,0xC5,0x53,0x02,0x00,0x00,0x00,  /* 00000110    ".$.S...." */
-    0x70,0x80,0x80,0x00,0x00,0x00,0x02,0x06,  /* 00000118    "p......." */
-    0x07,0x00,0x30,0xAE,0x09,0x00,0x0A,0x00,  /* 00000120    "..0....." */
-    0x00,0x00,0x02,0x03,0x0D,0x07,0x00,0x00,  /* 00000128    "........" */
-    0x00,0xCC,0x03,0x09,0x34,0x12,0x28,0x01,  /* 00000130    "....4.(." */
-    0x02,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00,  /* 00000138    "...xVD3." */
-    0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16,  /* 00000140    ".fU....." */
-    0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88,  /* 00000148    ".2......" */
-    0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94,  /* 00000150    ".n....l." */
-    0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5,  /* 00000158    "E..{].$." */
-    0x53,0x04,0x00,0x00,0x00,0x70,0x80,0x90,  /* 00000160    "S....p.." */
-    0xA0,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00,  /* 00000168    "...xVD3." */
-    0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16,  /* 00000170    ".fU....." */
-    0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88,  /* 00000178    ".2......" */
-    0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94,  /* 00000180    ".n....l." */
-    0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5,  /* 00000188    "E..{].$." */
-    0x53,0x05,0x00,0x00,0x00,0x70,0x80,0x90,  /* 00000190    "S....p.." */
-    0xA0,0xB0,0x7C,0x00,0x00,0x00,0x05,0x06,  /* 00000198    "..|....." */
-    0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00,  /* 000001A0    "..4....." */
-    0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00,  /* 000001A8    "........" */
-    0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56,  /* 000001B0    "......xV" */
-    0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00,  /* 000001B8    "D3..fU.." */
-    0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00,  /* 000001C0    "....2..." */
-    0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6,  /* 000001C8    "....n..." */
-    0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D,  /* 000001D0    ".l.E..{]" */
-    0xCE,0x24,0xC5,0x53,0x11,0x00,0x00,0x00,  /* 000001D8    ".$.S...." */
-    0x00,0x01,0x32,0x03,0x04,0x05,0x06,0x37,  /* 000001E0    "..2....7" */
-    0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x3F,  /* 000001E8    ".......?" */
-    0x0A,0x01,0x00,0x01,0x32,0x03,0x04,0x05,  /* 000001F0    "....2..." */
-    0x06,0x37,0x08,0x09,0x0A,0x0B,0x0C,0x0D,  /* 000001F8    ".7......" */
-    0x0E,0x3F,0x44,0x9A,0x00,0x01,0x32,0x03,  /* 00000200    ".?D...2." */
-    0x04,0x05,0x06,0x37,0x08,0x09,0x0A,0x0B,  /* 00000208    "...7...." */
-    0x0C,0x0D,0x0E,0x3F,0x0A,0x0B,0x04,0x00,  /* 00000210    "...?...." */
-    0x00,0x00,0xEF,0xBE,0xAD,0xDE             /* 00000218    "......"   */
-};
-
 const unsigned char TemplatePcct[] =
 {
     0x50,0x43,0x43,0x54,0xAE,0x02,0x00,0x00,  /* 00000000    "PCCT...." */
@@ -1370,20 +1753,27 @@ const unsigned char TemplatePdtt[] =
 
 const unsigned char TemplatePhat [] =
 {
-    0x50,0x48,0x41,0x54,0x6F,0x00,0x00,0x00,  /* 00000000    "PHATo..." */
-    0x01,0xC7,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x50,0x48,0x41,0x54,0xA2,0x00,0x00,0x00,  /* 00000000    "PHAT...." */
+    0x01,0xCA,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x05,0x01,0x21,0x20,0x00,0x00,0x28,0x00,  /* 00000020    "..! ..(." */
+    0x31,0x03,0x22,0x20,0x00,0x00,0x28,0x00,  /* 00000020    "1." ..(." */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000028    "........" */
     0x30,0x05,0xAF,0x91,0x86,0x5D,0x0E,0x47,  /* 00000030    "0....].G" */
     0xA6,0xB0,0x0A,0x2D,0xB9,0x40,0x82,0x49,  /* 00000038    "...-.@.I" */
     0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,  /* 00000040    "........" */
-    0x0C,0x0B,0x0A,0x09,0x01,0x00,0x23,0x00,  /* 00000048    "......#." */
+    0x0C,0x0B,0x0A,0x09,0x01,0x00,0x2E,0x00,  /* 00000048    "........" */
     0x00,0x00,0x00,0x00,0x30,0x05,0xAF,0x91,  /* 00000050    "....0..." */
     0x86,0x5D,0x0E,0x47,0xA6,0xB0,0x0A,0x2D,  /* 00000058    ".].G...-" */
-    0xB9,0x40,0x82,0x49,0x00,0x00,0x00,0x00,  /* 00000060    ".@.I...." */
-    0x61,0x73,0x64,0x66,0x00,0xFF,0x11        /* 00000068    "asdf..."  */
+    0xB9,0x40,0x82,0x49,0x2A,0x00,0x00,0x00,  /* 00000060    ".@.I*..." */
+    0x41,0x00,0x42,0x00,0x43,0x00,0x44,0x00,  /* 00000068    "A.B.C.D." */
+    0x45,0x00,0x46,0x00,0x00,0x00,0x01,0x02,  /* 00000070    "E.F....." */
+    0x03,0x04,0x00,0x00,0x28,0x00,0x00,0x00,  /* 00000078    "....(..." */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x05,  /* 00000080    "......0." */
+    0xAF,0x91,0x86,0x5D,0x0E,0x47,0xA6,0xB0,  /* 00000088    "...].G.." */
+    0x0A,0x2D,0xB9,0x40,0x82,0x49,0x08,0x07,  /* 00000090    ".-.@.I.." */
+    0x06,0x05,0x04,0x03,0x02,0x01,0x0C,0x0B,  /* 00000098    "........" */
+    0x0A,0x09                                 /* 000000A0    ".."       */
 };
 
 const unsigned char TemplatePmtt[] =
@@ -1534,6 +1924,17 @@ const unsigned char TemplateRasf[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000028    "........" */
 };
 
+const unsigned char TemplateRas2[] =
+{
+    0x52,0x41,0x53,0x32,0x38,0x00,0x00,0x00,  /* 00000000    "RAS28..." */
+    0x01,0x28,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".(INTEL " */
+    0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
+    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x28,0x06,0x23,0x20,0x00,0x00,0x02,0x00,  /* 00000020    "(.# ...." */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00   /* 00000030    "........" */
+};
+
 const unsigned char TemplateRgrt[] =
 {
     0x52,0x47,0x52,0x54,0x50,0x00,0x00,0x00,  /* 00000000    "RGRTP..." */
@@ -1548,6 +1949,49 @@ const unsigned char TemplateRgrt[] =
     0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27   /* 00000048    " !"#$%&'" */
 };
 
+const unsigned char TemplateRhct[] =
+{
+    0x52,0x48,0x43,0x54,0x96,0x00,0x00,0x00,  /* 00000000    "RHCT...." */
+    0x01,0x6D,0x4F,0x45,0x4D,0x43,0x41,0x00,  /* 00000008    ".mOEMCA." */
+    0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
+    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x04,0x04,0x25,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "..% ...." */
+    0x80,0x96,0x98,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
+    0x04,0x00,0x00,0x00,0x38,0x00,0x00,0x00,  /* 00000030    "....8..." */
+    0x00,0x00,0x34,0x00,0x01,0x00,0x2B,0x00,  /* 00000038    "..4...+." */
+    0x72,0x76,0x36,0x34,0x69,0x6D,0x61,0x66,  /* 00000040    "rv64imaf" */
+    0x64,0x63,0x68,0x5F,0x7A,0x69,0x63,0x73,  /* 00000048    "dch_zics" */
+    0x72,0x5F,0x7A,0x69,0x66,0x65,0x6E,0x63,  /* 00000050    "r_zifenc" */
+    0x65,0x69,0x5F,0x7A,0x62,0x61,0x5F,0x7A,  /* 00000058    "ei_zba_z" */
+    0x62,0x62,0x5F,0x7A,0x62,0x63,0x5F,0x7A,  /* 00000060    "bb_zbc_z" */
+    0x62,0x73,0x00,0x00,0x01,0x00,0x0A,0x00,  /* 00000068    "bs......" */
+    0x01,0x00,0x00,0x06,0x06,0x06,0x02,0x00,  /* 00000070    "........" */
+    0x08,0x00,0x01,0x00,0x00,0x02,0xFF,0xFF,  /* 00000078    "........" */
+    0x18,0x00,0x01,0x00,0x03,0x00,0x00,0x00,  /* 00000080    "........" */
+    0x00,0x00,0x3B,0x00,0x00,0x00,0x6C,0x00,  /* 00000088    "..;...l." */
+    0x00,0x00,0x76,0x00,0x00,0x00             /* 00000090    "..v..."   */
+};
+
+const unsigned char TemplateRimt[] =
+{
+    0x52,0x49,0x4d,0x54,0x80,0x00,0x00,0x00,  /* 00000000    "RIMT...." */
+    0x01,0xe1,0x42,0x4f,0x43,0x48,0x53,0x20,  /* 00000008    ".pBOCHS " */
+    0x42,0x58,0x50,0x43,0x20,0x20,0x20,0x20,  /* 00000010    "BXPC    " */
+    0x01,0x00,0x00,0x00,0x42,0x58,0x50,0x43,  /* 00000018    "....INTL" */
+    0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000020    "..$ ...." */
+    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "0......." */
+    0x00,0x01,0x28,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "..(....." */
+    0x52,0x53,0x43,0x56,0x30,0x30,0x30,0x34,  /* 00000038    "RSCV0004" */
+    0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,  /* 00000050    "......(." */
+    0x01,0x01,0x28,0x00,0x00,0x00,0x01,0x00,  /* 00000058    "..(....." */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    "........" */
+    0x14,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000068    "........" */
+    0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
+    0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000078    "0......." */
+};
+
 const unsigned char TemplateRsdp[] =
 {
     0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20,  /* 00000000    "RSD PTR " */
@@ -1735,8 +2179,8 @@ const unsigned char TemplateSlit[] =
 
 const unsigned char TemplateSpcr[] =
 {
-    0x53,0x50,0x43,0x52,0x50,0x00,0x00,0x00,  /* 00000000    "SPCRP..." */
-    0x01,0xE3,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x53,0x50,0x43,0x52,0x5A,0x00,0x00,0x00,  /* 00000000    "SPCRZ..." */
+    0x04,0x4E,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
     0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
     0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "(.. ...." */
@@ -1744,7 +2188,9 @@ const unsigned char TemplateSpcr[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000040    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x00,0x00,0x00,0x00,0x02,0x00,0x58,0x00,  /* 00000050    "......X." */
+    0x2E,0x00                                 /* 00000058    ".." */
 };
 
 const unsigned char TemplateSpmi[] =
@@ -1762,8 +2208,8 @@ const unsigned char TemplateSpmi[] =
 
 const unsigned char TemplateSrat[] =
 {
-    0x53,0x52,0x41,0x54,0xBE,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
-    0x03,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x53,0x52,0x41,0x54,0xD2,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
+    0x03,0xB6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
     0x29,0x06,0x18,0x20,0x01,0x00,0x00,0x00,  /* 00000020    ").. ...." */
@@ -1785,7 +2231,10 @@ const unsigned char TemplateSrat[] =
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B8    "......"   */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x14,  /* 000000B8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000C0    "........" */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 000000C8    "........" */
+    0x00,0x00                                 /* 000000D0    ".."       */
 };
 
 const unsigned char TemplateStao[] =
diff --git a/sys/contrib/dev/acpica/source/compiler/dtutils.c b/sys/contrib/dev/acpica/source/compiler/dtutils.c
index 2342ace32b..d2c0ac7156 100644
--- a/sys/contrib/dev/acpica/source/compiler/dtutils.c
+++ b/sys/contrib/dev/acpica/source/compiler/dtutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -411,6 +411,7 @@ DtGetFieldType (
     case ACPI_DMT_FLAGS0:
     case ACPI_DMT_FLAGS1:
     case ACPI_DMT_FLAGS2:
+    case ACPI_DMT_FLAGS8_2:
     case ACPI_DMT_FLAGS4:
     case ACPI_DMT_FLAGS4_0:
     case ACPI_DMT_FLAGS4_4:
@@ -435,9 +436,14 @@ DtGetFieldType (
     case ACPI_DMT_RAW_BUFFER:
     case ACPI_DMT_BUF7:
     case ACPI_DMT_BUF10:
+    case ACPI_DMT_BUF11:
     case ACPI_DMT_BUF12:
     case ACPI_DMT_BUF16:
     case ACPI_DMT_BUF18:
+    case ACPI_DMT_BUF24:
+    case ACPI_DMT_BUF26:
+    case ACPI_DMT_BUF32:
+    case ACPI_DMT_BUF112:
     case ACPI_DMT_BUF128:
     case ACPI_DMT_PCI_PATH:
     case ACPI_DMT_PMTT_VENDOR:
@@ -561,6 +567,7 @@ DtGetFieldLength (
     case ACPI_DMT_FLAGS0:
     case ACPI_DMT_FLAGS1:
     case ACPI_DMT_FLAGS2:
+    case ACPI_DMT_FLAGS8_2:
     case ACPI_DMT_FLAGS4:
     case ACPI_DMT_FLAGS4_0:
     case ACPI_DMT_FLAGS4_4:
@@ -582,12 +589,7 @@ DtGetFieldLength (
     case ACPI_DMT_IVRS_DE:
     case ACPI_DMT_GTDT:
     case ACPI_DMT_MADT:
-    case ACPI_DMT_NHLT1:
-    case ACPI_DMT_NHLT1a:
-    case ACPI_DMT_NHLT1b:
-    case ACPI_DMT_NHLT1c:
-    case ACPI_DMT_NHLT1d:
-    case ACPI_DMT_NHLT1f:
+    case ACPI_DMT_MPAM_LOCATOR:
     case ACPI_DMT_PCCT:
     case ACPI_DMT_PMTT:
     case ACPI_DMT_PPTT:
@@ -599,6 +601,7 @@ DtGetFieldLength (
     case ACPI_DMT_AEST_XFACE:
     case ACPI_DMT_AEST_XRUPT:
     case ACPI_DMT_ASF:
+    case ACPI_DMT_CDAT:
     case ACPI_DMT_HESTNTYP:
     case ACPI_DMT_FADTPM:
     case ACPI_DMT_EINJACT:
@@ -611,14 +614,16 @@ DtGetFieldLength (
         ByteLength = 1;
         break;
 
+    case ACPI_DMT_ASPT:
     case ACPI_DMT_UINT16:
     case ACPI_DMT_DMAR:
+    case ACPI_DMT_ERDT:
     case ACPI_DMT_HEST:
     case ACPI_DMT_HMAT:
     case ACPI_DMT_NFIT:
-    case ACPI_DMT_NHLT1e:
     case ACPI_DMT_PCI_PATH:
     case ACPI_DMT_PHAT:
+    case ACPI_DMT_RHCT:
 
         ByteLength = 2;
         break;
@@ -732,6 +737,11 @@ DtGetFieldLength (
         ByteLength = 10;
         break;
 
+    case ACPI_DMT_BUF11:
+
+        ByteLength = 11;
+        break;
+
     case ACPI_DMT_BUF12:
 
         ByteLength = 12;
@@ -748,6 +758,26 @@ DtGetFieldLength (
         ByteLength = 18;
         break;
 
+    case ACPI_DMT_BUF24:
+
+        ByteLength = 24;
+        break;
+
+    case ACPI_DMT_BUF26:
+
+        ByteLength = 26;
+        break;
+
+    case ACPI_DMT_BUF32:
+
+        ByteLength = 32;
+        break;
+
+    case ACPI_DMT_BUF112:
+
+        ByteLength = 112;
+        break;
+
     case ACPI_DMT_BUF128:
 
         ByteLength = 128;
@@ -798,7 +828,7 @@ DtSum (
     UINT8                   *Sum = ReturnValue;
 
 
-    Checksum = AcpiTbChecksum (Subtable->Buffer, Subtable->Length);
+    Checksum = AcpiUtChecksum (Subtable->Buffer, Subtable->Length);
     *Sum = (UINT8) (*Sum + Checksum);
 }
 
diff --git a/sys/contrib/dev/acpica/source/compiler/preprocess.h b/sys/contrib/dev/acpica/source/compiler/preprocess.h
index f4c8c30966..26a11f5734 100644
--- a/sys/contrib/dev/acpica/source/compiler/preprocess.h
+++ b/sys/contrib/dev/acpica/source/compiler/preprocess.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -249,6 +249,7 @@ typedef struct directive_info
  */
 PR_EXTERN char                  PR_INIT_GLOBAL (*AslGbl_MainTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */
 PR_EXTERN char                  PR_INIT_GLOBAL (*AslGbl_MacroTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */
+PR_EXTERN char                  PR_INIT_GLOBAL (*AslGbl_MacroTokenReplaceBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */
 PR_EXTERN char                  PR_INIT_GLOBAL (*AslGbl_ExpressionTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */
 
 PR_EXTERN UINT32                AslGbl_PreprocessorLineNumber;
@@ -370,6 +371,14 @@ PrError (
     UINT32                  Column);
 
 void
+PrReplaceResizeSubstring(
+    PR_MACRO_ARG            *Args,
+    UINT32                  Diff1,
+    UINT32                  Diff2,
+    UINT32                  i,
+    char                    *Token);
+
+char *
 PrReplaceData (
     char                    *Buffer,
     UINT32                  LengthToRemove,
diff --git a/sys/contrib/dev/acpica/source/compiler/prexpress.c b/sys/contrib/dev/acpica/source/compiler/prexpress.c
index db2e76ec87..6cdb5efd02 100644
--- a/sys/contrib/dev/acpica/source/compiler/prexpress.c
+++ b/sys/contrib/dev/acpica/source/compiler/prexpress.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/prmacros.c b/sys/contrib/dev/acpica/source/compiler/prmacros.c
index ab1255f665..8b4ed754d6 100644
--- a/sys/contrib/dev/acpica/source/compiler/prmacros.c
+++ b/sys/contrib/dev/acpica/source/compiler/prmacros.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -393,10 +393,10 @@ PrAddMacro (
     UINT16                  UseCount = 0;
     UINT16                  ArgCount = 0;
     UINT32                  Depth = 1;
+    /*UINT32                  Depth = 1;*/
     UINT32                  EndOfArgList;
     char                    BufferChar;
 
-
     /* Find the end of the arguments list */
 
     TokenOffset = Name - AslGbl_MainTokenBuffer + strlen (Name) + 1;
@@ -437,6 +437,7 @@ PrAddMacro (
     for (i = 0; i < PR_MAX_MACRO_ARGS; i++)
     {
         Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next);
+
         if (!Token)
         {
             /* This is the case for a NULL macro body */
@@ -454,14 +455,13 @@ PrAddMacro (
         }
 
         DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
-            "Macro arg: %s \n",
+            "Macro param: %s\n",
             AslGbl_CurrentLineNumber, Token);
 
         Args[i].Name = UtLocalCalloc (strlen (Token) + 1);
         strcpy (Args[i].Name, Token);
 
         Args[i].UseCount = 0;
-
         ArgCount++;
         if (ArgCount >= PR_MAX_MACRO_ARGS)
         {
@@ -476,7 +476,6 @@ PrAddMacro (
 
     /* Match each method arg in the macro body for later use */
 
-    Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next);
     while (Token)
     {
         /* Search the macro arg list for matching arg */
@@ -496,12 +495,14 @@ PrAddMacro (
                 Args[i].Offset[UseCount] =
                     (Token - AslGbl_MainTokenBuffer) - MacroBodyOffset;
 
+
                 DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
-                    "Macro Arg #%u: %s UseCount %u Offset %u \n",
+                    "Macro Arg #%u: %s UseCount %u Offset %u\n",
                     AslGbl_CurrentLineNumber, i, Token,
                     UseCount+1, Args[i].Offset[UseCount]);
 
                 Args[i].UseCount++;
+
                 if (Args[i].UseCount >= PR_MAX_ARG_INSTANCES)
                 {
                     PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS,
@@ -543,7 +544,7 @@ PrAddMacro (
     }
 
     DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
-        "Macro body: %s \n",
+        "Macro body: %s\n",
         AslGbl_CurrentLineNumber, BodyInSource);
 
     /* Add macro to the #define list */
@@ -596,7 +597,8 @@ PrDoMacroInvocation (
     UINT32                  TokenOffset;
     UINT32                  Length;
     UINT32                  i;
-
+    UINT32                  Diff1;
+    UINT32                  Diff2;
 
     /* Take a copy of the macro body for expansion */
 
@@ -610,6 +612,7 @@ PrDoMacroInvocation (
         /* This macro has no arguments */
 
         Token = PrGetNextToken (NULL, PR_MACRO_ARGUMENTS, Next);
+
         if (!Token)
         {
             goto BadInvocation;
@@ -634,32 +637,44 @@ PrDoMacroInvocation (
             goto BadInvocation;
         }
 
+        /*
+         * Avoid optimizing using just 1 signed int due to specific
+         * non-portable implementations of signed ints
+         */
+        Diff1 = strlen (Args->Name) > strlen (Token) ? strlen (Args->Name) -
+            strlen (Token) : 0;
+
+        Diff2 = strlen (Args->Name) < strlen (Token) ? strlen (Token) -
+            strlen (Args->Name) : 0;
+
         /* Replace all instances of this argument */
 
         for (i = 0; i < Args->UseCount; i++)
         {
-            /* Offset zero indicates "arg not used" */
-            /* TBD: Not really needed now, with UseCount available */
+            /*
+             * To test the output of the preprocessed macro function that
+             * is passed to the compiler
+             */
 
-            if (Args->Offset[i] == 0)
-            {
-                break;
-            }
+             /*
+              * fprintf (stderr, "Current token = %s \t Current arg_name = %s \
+              * \t strlen (Token) = %u \t strlen (Args->Name) = %u \t Offset = %u \
+              * \t UseCount = %u \t", Token, Args->Name, strlen (Token), \
+              *     strlen (Args->Name), Args->Offset[i], Args->UseCount);
+              */
+
+            AslGbl_MacroTokenReplaceBuffer = (char *) calloc ((strlen (AslGbl_MacroTokenBuffer)), sizeof (char));
 
-            PrReplaceData (
-                &AslGbl_MacroTokenBuffer[Args->Offset[i]], strlen (Args->Name),
-                Token, strlen (Token));
+            PrReplaceResizeSubstring (Args, Diff1, Diff2, i, Token);
 
             DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
-                "ExpandArg: %s \n",
+                "ExpandArg: %s\n",
                 AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer);
         }
 
         Args++;
     }
 
-    /* TBD: need to make sure macro was not invoked with too many arguments */
-
     if (!Token)
     {
         return;
@@ -676,13 +691,12 @@ PrDoMacroInvocation (
 
     return;
 
-
 BadInvocation:
     PrError (ASL_ERROR, ASL_MSG_INVALID_INVOCATION,
         THIS_TOKEN_OFFSET (MacroStart));
 
     DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
-        "Bad macro invocation: %s \n",
+        "Bad macro invocation: %s\n",
         AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer);
     return;
 }
diff --git a/sys/contrib/dev/acpica/source/compiler/prparser.l b/sys/contrib/dev/acpica/source/compiler/prparser.l
index febcc31925..22b87328bd 100644
--- a/sys/contrib/dev/acpica/source/compiler/prparser.l
+++ b/sys/contrib/dev/acpica/source/compiler/prparser.l
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/prparser.y b/sys/contrib/dev/acpica/source/compiler/prparser.y
index f7e052d910..0e4fb8e139 100644
--- a/sys/contrib/dev/acpica/source/compiler/prparser.y
+++ b/sys/contrib/dev/acpica/source/compiler/prparser.y
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/compiler/prscan.c b/sys/contrib/dev/acpica/source/compiler/prscan.c
index 7672ef895e..49cb211c19 100644
--- a/sys/contrib/dev/acpica/source/compiler/prscan.c
+++ b/sys/contrib/dev/acpica/source/compiler/prscan.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -780,8 +780,9 @@ PrDoDirective (
         TokenOffset = Token - AslGbl_MainTokenBuffer + strlen (Token);
         if (*(&AslGbl_CurrentLineBuffer[TokenOffset]) == '(')
         {
-#ifndef MACROS_SUPPORTED
-            AcpiOsPrintf (
+
+#ifdef MACROS_SUPPORTED
+            AcpiOsPrintf(
                 "%s ERROR - line %u: #define macros are not supported yet\n",
                 AslGbl_CurrentLineBuffer, AslGbl_LogicalLineNumber);
             exit(1);
@@ -789,6 +790,8 @@ PrDoDirective (
             PrAddMacro (Token, Next);
 #endif
         }
+
+
         else
         {
             /* Use the remainder of the line for the #define */
diff --git a/sys/contrib/dev/acpica/source/compiler/prutils.c b/sys/contrib/dev/acpica/source/compiler/prutils.c
index e793b4c470..f516c30fe7 100644
--- a/sys/contrib/dev/acpica/source/compiler/prutils.c
+++ b/sys/contrib/dev/acpica/source/compiler/prutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -282,6 +282,262 @@ PrError (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    PrReplaceResizeSubstring
+ *
+ * PARAMETERS:  Args                - Struct containing name, offset & usecount
+ *              Diff1               - Difference in lengths when new < old
+ *              Diff2               - Difference in lengths when new > old
+*               i                   - The curr. no. of iteration of replacement
+ *              Token               - Substring that replaces Args->Name
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Advanced substring replacement in a string using resized buffer.
+ *
+ ******************************************************************************/
+
+void
+PrReplaceResizeSubstring(
+    PR_MACRO_ARG            *Args,
+    UINT32                  Diff1,
+    UINT32                  Diff2,
+    UINT32                  i,
+    char                    *Token)
+{
+    UINT32                  b, PrevOffset;
+    char                    *temp;
+    char                    macro_sep[64];
+
+
+    AslGbl_MacroTokenReplaceBuffer = (char *) realloc (AslGbl_MacroTokenReplaceBuffer,
+        (2 * (strlen (AslGbl_MacroTokenBuffer))));
+
+    strcpy (macro_sep, "~,() {}!*/%+-<>=&^|\"\t\n");
+
+    /*
+     * When the replacement argument (during invocation) length
+     * < replaced parameter (in the macro function definition
+     * and its expansion) length
+     */
+    if (Diff1 != 0)
+    {
+        /*
+         * We save the offset value to reset it after replacing each
+         * instance of each arg and setting the offset value to
+         * the start of the arg to be replaced since it changes
+         * with each iteration when arg length != token length
+         */
+        PrevOffset = Args->Offset[i];
+        temp = strstr (AslGbl_MacroTokenBuffer, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+
+ResetHere1:
+        temp = strstr (temp, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+        Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) -
+            strlen (temp);
+        if (Args->Offset[i] == 0)
+        {
+            goto JumpHere1;
+        }
+        if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) &&
+            (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))])))
+        {
+            Args->Offset[i] += 0;
+        }
+        else
+        {
+            temp += strlen (Args->Name);
+            goto ResetHere1;
+        }
+
+        /*
+         * For now, we simply set the extra char positions (generated
+         * due to longer name replaced by shorter name) to whitespace
+         * chars so it will be ignored during compilation
+         */
+JumpHere1:
+        b = strlen (Token) + Args->Offset[i];
+        memset (&AslGbl_MacroTokenBuffer[b], ' ', Diff1);
+
+# if 0
+
+    /* Work in progress as of 03/08/2023 - experimental 'if' block
+     * to test code for removing extra whitespaces from the macro
+     * replacement when replacement arg < replaced param
+     */
+        char Buff[8192];
+        /* char* Replace; */
+        /* Replace = Buff; */
+
+        for (j = 0; j < strlen (AslGbl_MacroTokenBuffer); j++)
+        {
+            Buff[j] = AslGbl_MacroTokenBuffer[j];
+        }
+        Buff[strlen (AslGbl_MacroTokenBuffer)] = '\0';
+        /* fprintf(stderr, "Buff: %s\n", Buff); */
+
+        UINT32 len = strlen (Buff);
+
+        for (j = 0; j < len; j++)
+        {
+            if (Buff[0] == ' ')
+            {
+                for (j = 0; j < (len - 1); j++)
+                {
+                    Buff[j] = Buff[j + 1];
+                }
+                Buff[j] = '\0';
+                len--;
+                j = -1;
+                continue;
+            }
+
+            if (Buff[j] == ' ' && Buff[j + 1] == ' ')
+            {
+                for (k = 0; k < (len - 1); k++)
+                {
+                    Buff[j] = Buff[j + 1];
+                }
+                Buff[j] = '\0';
+                len--;
+                j--;
+            }
+        }
+        /* fprintf(stderr, "Buff: %s\n", Buff); */
+
+        for (k = 0; k < strlen (Buff); k++)
+        {
+            AslGbl_MacroTokenBuffer[k] = Buff[k];
+        }
+#endif
+
+        PrReplaceData (
+            &AslGbl_MacroTokenBuffer[Args->Offset[i]],
+            strlen (Token), Token, strlen (Token));
+
+        temp = NULL;
+        Args->Offset[i] = PrevOffset;
+    }
+
+    /*
+     * When the replacement argument (during invocation) length
+     * > replaced parameter (in the macro function definition
+     * and its expansion) length
+     */
+    else if (Diff2 != 0)
+    {
+        /* Doing the same thing with offset value as for prev case */
+
+        PrevOffset = Args->Offset[i];
+        temp = strstr (AslGbl_MacroTokenBuffer, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+
+ResetHere2:
+        temp = strstr (temp, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+        Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) -
+            strlen (temp);
+        if (Args->Offset[i] == 0)
+        {
+            goto JumpHere2;
+        }
+        if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) &&
+            (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))])))
+        {
+            Args->Offset[i] += 0;
+        }
+        else
+        {
+            temp+= strlen (Args->Name);
+            goto ResetHere2;
+        }
+
+        /*
+         * We will need to allocate some extra space in our buffer to
+         * accommodate the increase in the replacement string length
+         * over the shorter outgoing arg string and do the replacement
+         * at the correct offset value which is resetted every iteration
+         */
+JumpHere2:
+        memcpy (AslGbl_MacroTokenReplaceBuffer, AslGbl_MacroTokenBuffer, Args->Offset[i]);
+        strcat (AslGbl_MacroTokenReplaceBuffer, Token);
+        strcat (AslGbl_MacroTokenReplaceBuffer, (AslGbl_MacroTokenBuffer +
+            (Args->Offset[i] + strlen (Args->Name))));
+
+        strcpy (AslGbl_MacroTokenBuffer, AslGbl_MacroTokenReplaceBuffer);
+
+        temp = NULL;
+        Args->Offset[i] = PrevOffset;
+    }
+
+    /*
+     * When the replacement argument (during invocation) length =
+     * replaced parameter (in the macro function definition and
+     * its expansion) length
+     */
+    else
+    {
+
+        /*
+         * We still need to reset the offset for each iteration even when
+         * arg and param lengths are same since any macro func invocation
+         * could use various cases for each separate arg-param pair
+         */
+        PrevOffset = Args->Offset[i];
+        temp = strstr (AslGbl_MacroTokenBuffer, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+
+ResetHere3:
+        temp = strstr (temp, Args->Name);
+        if (temp == NULL)
+        {
+            return;
+        }
+        Args->Offset[i] = strlen (AslGbl_MacroTokenBuffer) -
+            strlen (temp);
+        if (Args->Offset[i] == 0)
+        {
+            goto JumpHere3;
+        }
+        if ((strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] - 1)])) &&
+            (strchr (macro_sep, AslGbl_MacroTokenBuffer[(Args->Offset[i] + strlen (Args->Name))])))
+        {
+            Args->Offset[i] += 0;
+        }
+        else
+        {
+            temp += strlen (Args->Name);
+            goto ResetHere3;
+        }
+
+JumpHere3:
+        PrReplaceData (
+            &AslGbl_MacroTokenBuffer[Args->Offset[i]],
+            strlen (Args->Name), Token, strlen (Token));
+        temp = NULL;
+        Args->Offset[i] = PrevOffset;
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    PrReplaceData
@@ -291,13 +547,13 @@ PrError (
  *              BufferToAdd         - Data to be inserted into target buffer
  *              LengthToAdd         - Length of BufferToAdd
  *
- * RETURN:      None
+ * RETURN:      Pointer to where the buffer is replaced with data
  *
  * DESCRIPTION: Generic buffer data replacement.
  *
  ******************************************************************************/
 
-void
+char *
 PrReplaceData (
     char                    *Buffer,
     UINT32                  LengthToRemove,
@@ -325,12 +581,14 @@ PrReplaceData (
         }
     }
 
+
     /* Now we can move in the new data */
 
     if (LengthToAdd > 0)
     {
         memmove (Buffer, BufferToAdd, LengthToAdd);
     }
+    return (Buffer + LengthToAdd);
 }
 
 
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbcmds.c b/sys/contrib/dev/acpica/source/components/debugger/dbcmds.c
index fc51244df6..01dd8fff6b 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbcmds.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbcmds.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -1292,6 +1292,64 @@ AcpiDbDisplayResources (
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDbGenerateGed
+ *
+ * PARAMETERS:  GedArg              - Raw GED number, ascii string
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Simulate firing of a GED
+ *
+ ******************************************************************************/
+
+void
+AcpiDbGenerateInterrupt (
+    char *GsivArg)
+{
+    UINT32      GsivNumber;
+    ACPI_GED_HANDLER_INFO *GedInfo = AcpiGbl_GedHandlerList;
+
+	if (!GedInfo) {
+		AcpiOsPrintf ("No GED handling present\n");
+	}
+
+    GsivNumber = strtoul (GsivArg, NULL, 0);
+
+	while (GedInfo) {
+
+		if (GedInfo->IntId == GsivNumber) {
+			ACPI_OBJECT_LIST ArgList;
+			ACPI_OBJECT Arg0;
+			ACPI_HANDLE EvtHandle = GedInfo->EvtMethod;
+			ACPI_STATUS Status;
+
+			AcpiOsPrintf ("Evaluate GED _EVT (GSIV=%d)\n", GsivNumber);
+
+			if (!EvtHandle) {
+				AcpiOsPrintf ("Undefined _EVT method\n");
+				return;
+			}
+
+			Arg0.Integer.Type = ACPI_TYPE_INTEGER;
+			Arg0.Integer.Value = GsivNumber;
+
+			ArgList.Count = 1;
+			ArgList.Pointer = &Arg0;
+
+			Status = AcpiEvaluateObject (EvtHandle, NULL, &ArgList, NULL);
+			if (ACPI_FAILURE (Status))
+			{
+				AcpiOsPrintf ("Could not evaluate _EVT\n");
+				return;
+			}
+
+		}
+		GedInfo = GedInfo->Next;
+	}
+}
+
 #if (!ACPI_REDUCED_HARDWARE)
 /*******************************************************************************
  *
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbconvert.c b/sys/contrib/dev/acpica/source/components/debugger/dbconvert.c
index 971e3044fd..6b4995ff23 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbconvert.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbconvert.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -355,6 +355,8 @@ AcpiDbConvertToPackage (
 
     Elements = ACPI_ALLOCATE_ZEROED (
         DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT));
+    if (!Elements)
+        return (AE_NO_MEMORY);
 
     This = String;
     for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++)
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbdisply.c b/sys/contrib/dev/acpica/source/components/debugger/dbdisply.c
index bf5d197fc1..6127084439 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbdisply.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbdisply.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbexec.c b/sys/contrib/dev/acpica/source/components/debugger/dbexec.c
index 52d36ada3c..4ab5abceb6 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbexec.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbexec.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbfileio.c b/sys/contrib/dev/acpica/source/components/debugger/dbfileio.c
index bfc6c501a6..071be4f034 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbfileio.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbfileio.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbhistry.c b/sys/contrib/dev/acpica/source/components/debugger/dbhistry.c
index 4c5d5ed73f..ab0eb9ad60 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbhistry.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbhistry.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbinput.c b/sys/contrib/dev/acpica/source/components/debugger/dbinput.c
index 067f798d42..a40d5c99d1 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbinput.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbinput.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -266,6 +266,7 @@ enum AcpiExDebuggerCommands
     CMD_THREADS,
 
     CMD_TEST,
+	CMD_INTERRUPT,
 #endif
 };
 
@@ -347,6 +348,7 @@ static const ACPI_DB_COMMAND_INFO   AcpiGbl_DbCommands[] =
     {"THREADS",      3},
 
     {"TEST",         1},
+    {"INTERRUPT",    1},
 #endif
     {NULL,           0}
 };
@@ -463,6 +465,7 @@ static const ACPI_DB_COMMAND_HELP   AcpiGbl_DbCommandHelp[] =
     {1, "  Gpes",                               "Display info on all GPE devices\n"},
     {1, "  Sci",                                "Generate an SCI\n"},
     {1, "  Sleep [SleepState]",                 "Simulate sleep/wake sequence(s) (0-5)\n"},
+    {1, "  Interrupt <GSIV>",                   "Simulate an interrupt\n"},
 #endif
     {0, NULL, NULL}
 };
@@ -1265,6 +1268,11 @@ AcpiDbCommandDispatch (
         AcpiOsPrintf ("Event command not implemented\n");
         break;
 
+	case CMD_INTERRUPT:
+
+		AcpiDbGenerateInterrupt (AcpiGbl_DbArgs[1]);
+		break;
+
     case CMD_GPE:
 
         AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbmethod.c b/sys/contrib/dev/acpica/source/components/debugger/dbmethod.c
index 8dc7a6a09c..536a1d92c5 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbmethod.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbmethod.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbnames.c b/sys/contrib/dev/acpica/source/components/debugger/dbnames.c
index 623631607b..629a596f38 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbnames.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbnames.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -776,7 +776,12 @@ AcpiDbWalkForFields (
     ACPI_FREE (Buffer.Pointer);
 
     Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
-    AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer);
+    Status = AcpiEvaluateObject (ObjHandle, NULL, NULL, &Buffer);
+    if (ACPI_FAILURE (Status))
+    {
+        AcpiOsPrintf ("Could Not evaluate object %p\n", ObjHandle);
+        return (AE_OK);
+    }
 
     /*
      * Since this is a field unit, surround the output in braces
@@ -886,6 +891,9 @@ AcpiDbDisplayObjects (
     {
         ObjectInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_OBJECT_INFO));
 
+        if (!ObjectInfo)
+                return (AE_NO_MEMORY);
+
         /* Walk the namespace from the root */
 
         (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT,
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbobject.c b/sys/contrib/dev/acpica/source/components/debugger/dbobject.c
index caba94cc66..0dff505d71 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbobject.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbobject.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbstats.c b/sys/contrib/dev/acpica/source/components/debugger/dbstats.c
index cd423192ec..6dd0aec391 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbstats.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbstats.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbtest.c b/sys/contrib/dev/acpica/source/components/debugger/dbtest.c
index a9801a531b..9ba8854c82 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbtest.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbtest.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbutils.c b/sys/contrib/dev/acpica/source/components/debugger/dbutils.c
index 79f93a030b..fc6062aa00 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbutils.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/debugger/dbxface.c b/sys/contrib/dev/acpica/source/components/debugger/dbxface.c
index fa57c82715..f944322185 100644
--- a/sys/contrib/dev/acpica/source/components/debugger/dbxface.c
+++ b/sys/contrib/dev/acpica/source/components/debugger/dbxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmbuffer.c b/sys/contrib/dev/acpica/source/components/disassembler/dmbuffer.c
index ff26af8f8e..c79c5fd4b9 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmbuffer.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmbuffer.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmcstyle.c b/sys/contrib/dev/acpica/source/components/disassembler/dmcstyle.c
index 0b82cc83c3..e22d174771 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmcstyle.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmcstyle.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmdeferred.c b/sys/contrib/dev/acpica/source/components/disassembler/dmdeferred.c
index 23e1c58fa3..3a30cfd689 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmdeferred.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmdeferred.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmnames.c b/sys/contrib/dev/acpica/source/components/disassembler/dmnames.c
index 3ed0eeb6aa..3555492173 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmnames.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmnames.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmopcode.c b/sys/contrib/dev/acpica/source/components/disassembler/dmopcode.c
index 4b41404583..cc019f5b0e 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmopcode.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmopcode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmresrc.c b/sys/contrib/dev/acpica/source/components/disassembler/dmresrc.c
index 888f8861bc..4649c6cc61 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmresrc.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmresrc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -204,6 +204,7 @@ static ACPI_RESOURCE_HANDLER    AcpiGbl_DmResourceDispatch [] =
     AcpiDmPinGroupDescriptor,       /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */
     AcpiDmPinGroupFunctionDescriptor, /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */
     AcpiDmPinGroupConfigDescriptor, /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */
+    AcpiDmClockInputDescriptor,     /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */
 };
 
 
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl.c b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl.c
index c499aecf95..71b419b7f3 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl2.c b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl2.c
index 804dd65cf4..b3f9408652 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl2.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcl2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -527,6 +527,46 @@ AcpiDmGpioDescriptor (
     }
 }
 
+void
+AcpiDmClockInputDescriptor (
+    ACPI_OP_WALK_INFO       *Info,
+    AML_RESOURCE            *Resource,
+    UINT32                  Length,
+    UINT32                  Level)
+{
+    char                    *DeviceName = NULL;
+    UINT8                   *ResourceIndex = NULL;
+    AcpiDmIndent (Level);
+
+    AcpiOsPrintf ("ClockInput (");
+
+    AcpiOsPrintf ("0x%8.8X, ", Resource->ClockInput.FrequencyNumerator);
+
+    AcpiOsPrintf ("0x%4.4X, ", Resource->ClockInput.FrequencyDivisor);
+
+    AcpiOsPrintf ("%s, ",
+        AcpiGbl_ClockInputScale [ACPI_EXTRACT_2BIT_FLAG (Resource->ClockInput.Flags, 1)]);
+
+    AcpiOsPrintf ("%s, ",
+        AcpiGbl_ClockInputMode [ACPI_GET_1BIT_FLAG (Resource->ClockInput.Flags)]);
+
+    if (Length > sizeof(Resource->ClockInput))
+    {
+        DeviceName = ACPI_ADD_PTR (char,
+            Resource, sizeof(Resource->ClockInput)+1),
+        AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX);
+
+        AcpiOsPrintf (", ");
+        ResourceIndex = ACPI_ADD_PTR (UINT8,
+            Resource, sizeof(Resource->ClockInput)),
+
+        AcpiOsPrintf ("0x%2.2X", *ResourceIndex);
+    }
+
+    AcpiOsPrintf (")\n");
+
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDmPinFunctionDescriptor
@@ -740,7 +780,7 @@ AcpiDmCsi2SerialBusDescriptor (
 
     AcpiOsPrintf (" 0x%2.2X, 0x%2.2X,\n",
         Resource->Csi2SerialBus.TypeSpecificFlags & 0x03,
-        Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC);
+        (Resource->Csi2SerialBus.TypeSpecificFlags & 0xFC) >> 2);
 
     /* ResourceSource is a required field */
 
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcs.c b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcs.c
index de2fe591ab..4188126c7a 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmresrcs.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmresrcs.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmutils.c b/sys/contrib/dev/acpica/source/components/disassembler/dmutils.c
index 07daf89815..eb2b151778 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmutils.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/disassembler/dmwalk.c b/sys/contrib/dev/acpica/source/components/disassembler/dmwalk.c
index ed0c13ec2f..4fddb83604 100644
--- a/sys/contrib/dev/acpica/source/components/disassembler/dmwalk.c
+++ b/sys/contrib/dev/acpica/source/components/disassembler/dmwalk.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -961,9 +961,15 @@ AcpiDmDescendingOp (
                 NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
                 ASL_CV_CLOSE_PAREN (Op, Level);
 
-                /* Emit description comment for Name() with a predefined ACPI name */
-
-                AcpiDmPredefinedDescription (Op->Asl.Parent);
+                if (Op->Asl.Parent->Common.AmlOpcode == AML_NAME_OP)
+                {
+                    /*
+                     * Emit description comment showing the full ACPI name
+                     * of the ResourceTemplate only if it was defined using a
+                     * Name statement.
+                     */
+                     AcpiDmPredefinedDescription (Op->Asl.Parent);
+                }
 
                 AcpiOsPrintf ("\n");
                 AcpiDmIndent (Info->Level);
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsargs.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsargs.c
index 4a24160c59..7fe605f1d1 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsargs.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsargs.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dscontrol.c b/sys/contrib/dev/acpica/source/components/dispatcher/dscontrol.c
index 8b860a553f..3eaa6f3f82 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dscontrol.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dscontrol.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsdebug.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsdebug.c
index 26504c5a9c..2bc7dc004f 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsdebug.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsdebug.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsfield.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsfield.c
index bd2755aec2..15e35fd76f 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsfield.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsfield.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsinit.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsinit.c
index 82857cb68e..758233ec99 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsinit.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsinit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsmethod.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsmethod.c
index fd56bd509e..6009f732c2 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsmethod.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsmethod.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -646,8 +646,6 @@ AcpiDsCallControlMethod (
     ACPI_WALK_STATE         *NextWalkState = NULL;
     ACPI_OPERAND_OBJECT     *ObjDesc;
     ACPI_EVALUATE_INFO      *Info;
-    UINT32                  i;
-
 
     ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState);
 
@@ -670,6 +668,23 @@ AcpiDsCallControlMethod (
         return_ACPI_STATUS (AE_NULL_OBJECT);
     }
 
+    if (ThisWalkState->NumOperands < ObjDesc->Method.ParamCount)
+    {
+        ACPI_ERROR ((AE_INFO, "Missing argument(s) for method [%4.4s]",
+            AcpiUtGetNodeName (MethodNode)));
+
+        return_ACPI_STATUS (AE_AML_TOO_FEW_ARGUMENTS);
+    }
+
+    else if (ThisWalkState->NumOperands > ObjDesc->Method.ParamCount)
+    {
+        ACPI_ERROR ((AE_INFO, "Too many arguments for method [%4.4s]",
+            AcpiUtGetNodeName (MethodNode)));
+
+        return_ACPI_STATUS (AE_AML_TOO_MANY_ARGUMENTS);
+    }
+
+
     /* Init for new method, possibly wait on method mutex */
 
     Status = AcpiDsBeginMethodExecution (
@@ -705,7 +720,7 @@ AcpiDsCallControlMethod (
     if (!Info)
     {
         Status = AE_NO_MEMORY;
-        goto Cleanup;
+        goto PopWalkState;
     }
 
     Info->Parameters = &ThisWalkState->Operands[0];
@@ -717,7 +732,7 @@ AcpiDsCallControlMethod (
     ACPI_FREE (Info);
     if (ACPI_FAILURE (Status))
     {
-        goto Cleanup;
+        goto PopWalkState;
     }
 
     NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1;
@@ -726,15 +741,7 @@ AcpiDsCallControlMethod (
      * Delete the operands on the previous walkstate operand stack
      * (they were copied to new objects)
      */
-    for (i = 0; i < ObjDesc->Method.ParamCount; i++)
-    {
-        AcpiUtRemoveReference (ThisWalkState->Operands [i]);
-        ThisWalkState->Operands [i] = NULL;
-    }
-
-    /* Clear the operand stack */
-
-    ThisWalkState->NumOperands = 0;
+    AcpiDsClearOperands (ThisWalkState);
 
     ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
         "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
@@ -764,6 +771,12 @@ AcpiDsCallControlMethod (
     return_ACPI_STATUS (Status);
 
 
+PopWalkState:
+
+    /* On error, pop the walk state to be deleted from thread */
+
+    AcpiDsPopWalkState(Thread);
+
 Cleanup:
 
     /* On error, we must terminate the method properly */
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsmthdat.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsmthdat.c
index ab0a9d118f..98e69efa1f 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsmthdat.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsmthdat.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -357,6 +357,7 @@ AcpiDsMethodDataInitArgs (
 
         Index++;
     }
+    AcpiExTraceArgs(Params, Index);
 
     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n", Index));
     return_ACPI_STATUS (AE_OK);
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsobject.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsobject.c
index 20dd20c11a..08d93ecd40 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsobject.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsobject.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsopcode.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsopcode.c
index 579421fab2..baba6805b3 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsopcode.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsopcode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dspkginit.c b/sys/contrib/dev/acpica/source/components/dispatcher/dspkginit.c
index 06c0341458..22f4a99ba2 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dspkginit.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dspkginit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dsutils.c b/sys/contrib/dev/acpica/source/components/dispatcher/dsutils.c
index 0bb4fb2d33..d2d16c4865 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dsutils.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dsutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -867,6 +867,8 @@ AcpiDsCreateOperands (
     ACPI_PARSE_OBJECT       *Arguments[ACPI_OBJ_NUM_OPERANDS];
     UINT32                  ArgCount = 0;
     UINT32                  Index = WalkState->NumOperands;
+    UINT32                  PrevNumOperands = WalkState->NumOperands;
+    UINT32                  NewNumOperands;
     UINT32                  i;
 
 
@@ -899,6 +901,7 @@ AcpiDsCreateOperands (
 
     /* Create the interpreter arguments, in reverse order */
 
+    NewNumOperands = Index;
     Index--;
     for (i = 0; i < ArgCount; i++)
     {
@@ -926,7 +929,11 @@ AcpiDsCreateOperands (
      * pop everything off of the operand stack and delete those
      * objects
      */
-    AcpiDsObjStackPopAndDelete (ArgCount, WalkState);
+    WalkState->NumOperands = (UINT8) (i);
+    AcpiDsObjStackPopAndDelete (NewNumOperands, WalkState);
+
+    /* Restore operand count */
+    WalkState->NumOperands = (UINT8) (PrevNumOperands);
 
     ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %u", Index));
     return_ACPI_STATUS (Status);
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dswexec.c b/sys/contrib/dev/acpica/source/components/dispatcher/dswexec.c
index 636067bfe7..bb1558ea31 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dswexec.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dswexec.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -173,7 +173,7 @@ static ACPI_EXECUTE_OP      AcpiGbl_OpTypeDispatch [] =
     AcpiExOpcode_0A_0T_1R,
     AcpiExOpcode_1A_0T_0R,
     AcpiExOpcode_1A_0T_1R,
-    AcpiExOpcode_1A_1T_0R,
+    NULL,   /* Was: AcpiExOpcode_1A_0T_0R (Was for Load operator) */
     AcpiExOpcode_1A_1T_1R,
     AcpiExOpcode_2A_0T_0R,
     AcpiExOpcode_2A_0T_1R,
@@ -569,9 +569,11 @@ AcpiDsExecEndOp (
 
         /*
          * All opcodes require operand resolution, with the only exceptions
-         * being the ObjectType and SizeOf operators.
+         * being the ObjectType and SizeOf operators as well as opcodes that
+         * take no arguments.
          */
-        if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE))
+        if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE) &&
+            (WalkState->OpInfo->Flags & AML_HAS_ARGS))
         {
             /* Resolve all operands */
 
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dswload.c b/sys/contrib/dev/acpica/source/components/dispatcher/dswload.c
index a9b22dd15a..b4b7e512db 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dswload.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dswload.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dswload2.c b/sys/contrib/dev/acpica/source/components/dispatcher/dswload2.c
index 0311d0d991..4ad4014a28 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dswload2.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dswload2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dswscope.c b/sys/contrib/dev/acpica/source/components/dispatcher/dswscope.c
index bc360b66ec..58cc755098 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dswscope.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dswscope.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/dispatcher/dswstate.c b/sys/contrib/dev/acpica/source/components/dispatcher/dswstate.c
index 9f79601fa1..a5a63d01b1 100644
--- a/sys/contrib/dev/acpica/source/components/dispatcher/dswstate.c
+++ b/sys/contrib/dev/acpica/source/components/dispatcher/dswstate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -310,8 +310,8 @@ AcpiDsResultPush (
     if (!Object)
     {
         ACPI_ERROR ((AE_INFO,
-            "Null Object! Obj=%p State=%p Num=%u",
-            Object, WalkState, WalkState->ResultCount));
+            "Null Object! State=%p Num=%u",
+            WalkState, WalkState->ResultCount));
         return (AE_BAD_PARAMETER);
     }
 
@@ -785,9 +785,14 @@ AcpiDsInitAmlWalk (
 
 
     WalkState->ParserState.Aml =
-    WalkState->ParserState.AmlStart = AmlStart;
+    WalkState->ParserState.AmlStart =
     WalkState->ParserState.AmlEnd =
-    WalkState->ParserState.PkgEnd = AmlStart + AmlLength;
+    WalkState->ParserState.PkgEnd = AmlStart;
+    /* Avoid undefined behavior: applying zero offset to null pointer */
+    if (AmlLength != 0) {
+      WalkState->ParserState.AmlEnd += AmlLength;
+      WalkState->ParserState.PkgEnd += AmlLength;
+    }
 
     /* The NextOp of the NextWalk will be the beginning of the method */
 
diff --git a/sys/contrib/dev/acpica/source/components/events/evevent.c b/sys/contrib/dev/acpica/source/components/events/evevent.c
index b935960835..b2dd444a38 100644
--- a/sys/contrib/dev/acpica/source/components/events/evevent.c
+++ b/sys/contrib/dev/acpica/source/components/events/evevent.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evglock.c b/sys/contrib/dev/acpica/source/components/events/evglock.c
index 1eb740d94f..153a7ff0a2 100644
--- a/sys/contrib/dev/acpica/source/components/events/evglock.c
+++ b/sys/contrib/dev/acpica/source/components/events/evglock.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -195,6 +195,11 @@ AcpiEvInitGlobalLockHandler (
         return_ACPI_STATUS (AE_OK);
     }
 
+    if (!AcpiGbl_UseGlobalLock)
+    {
+        return_ACPI_STATUS (AE_OK);
+    }
+
     /* Attempt installation of the global lock handler */
 
     Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL,
diff --git a/sys/contrib/dev/acpica/source/components/events/evgpe.c b/sys/contrib/dev/acpica/source/components/events/evgpe.c
index 45c506ab75..01e628a295 100644
--- a/sys/contrib/dev/acpica/source/components/events/evgpe.c
+++ b/sys/contrib/dev/acpica/source/components/events/evgpe.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evgpeblk.c b/sys/contrib/dev/acpica/source/components/events/evgpeblk.c
index 03bb0b053f..899e19b139 100644
--- a/sys/contrib/dev/acpica/source/components/events/evgpeblk.c
+++ b/sys/contrib/dev/acpica/source/components/events/evgpeblk.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evgpeinit.c b/sys/contrib/dev/acpica/source/components/events/evgpeinit.c
index 7a41fae0e9..5321950d51 100644
--- a/sys/contrib/dev/acpica/source/components/events/evgpeinit.c
+++ b/sys/contrib/dev/acpica/source/components/events/evgpeinit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -564,6 +564,7 @@ AcpiEvMatchGpeMethod (
     GpeEventInfo->Flags &= ~(ACPI_GPE_DISPATCH_MASK);
     GpeEventInfo->Flags |= (UINT8) (Type | ACPI_GPE_DISPATCH_METHOD);
     GpeEventInfo->Dispatch.MethodNode = MethodNode;
+    WalkInfo->Count++;
 
     ACPI_DEBUG_PRINT ((ACPI_DB_LOAD,
         "Registered GPE method %s as GPE number 0x%.2X\n",
diff --git a/sys/contrib/dev/acpica/source/components/events/evgpeutil.c b/sys/contrib/dev/acpica/source/components/events/evgpeutil.c
index 679ca69862..32e7c0fa32 100644
--- a/sys/contrib/dev/acpica/source/components/events/evgpeutil.c
+++ b/sys/contrib/dev/acpica/source/components/events/evgpeutil.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evhandler.c b/sys/contrib/dev/acpica/source/components/events/evhandler.c
index 763b294e34..efc466462f 100644
--- a/sys/contrib/dev/acpica/source/components/events/evhandler.c
+++ b/sys/contrib/dev/acpica/source/components/events/evhandler.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evmisc.c b/sys/contrib/dev/acpica/source/components/events/evmisc.c
index 5052a1fdce..d2e751d019 100644
--- a/sys/contrib/dev/acpica/source/components/events/evmisc.c
+++ b/sys/contrib/dev/acpica/source/components/events/evmisc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evregion.c b/sys/contrib/dev/acpica/source/components/events/evregion.c
index 6c73bc8011..d3777b6356 100644
--- a/sys/contrib/dev/acpica/source/components/events/evregion.c
+++ b/sys/contrib/dev/acpica/source/components/events/evregion.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -320,14 +320,22 @@ AcpiEvAddressSpaceDispatch (
             return_ACPI_STATUS (AE_NOT_EXIST);
         }
 
-	if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM)
-	{
-	    ACPI_PCC_INFO *Ctx = HandlerDesc->AddressSpace.Context;
+        if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM)
+        {
+            ACPI_PCC_INFO *Ctx = HandlerDesc->AddressSpace.Context;
+
+            Ctx->InternalBuffer = FieldObj->Field.InternalPccBuffer;
+            Ctx->Length = (UINT16) RegionObj->Region.Length;
+            Ctx->SubspaceId = (UINT8) RegionObj->Region.Address;
+        }
 
-	    Ctx->InternalBuffer = FieldObj->Field.InternalPccBuffer;
-	    Ctx->Length = (UINT16) RegionObj->Region.Length;
-	    Ctx->SubspaceId = (UINT8) RegionObj->Region.Address;
-	}
+        if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE)
+        {
+            ACPI_FFH_INFO *Ctx = HandlerDesc->AddressSpace.Context;
+
+            Ctx->Length = RegionObj->Region.Length;
+            Ctx->Offset = RegionObj->Region.Address;
+        }
 
         /*
          * We must exit the interpreter because the region setup will
diff --git a/sys/contrib/dev/acpica/source/components/events/evrgnini.c b/sys/contrib/dev/acpica/source/components/events/evrgnini.c
index 6959ff98d5..d8d09cdd0d 100644
--- a/sys/contrib/dev/acpica/source/components/events/evrgnini.c
+++ b/sys/contrib/dev/acpica/source/components/events/evrgnini.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evsci.c b/sys/contrib/dev/acpica/source/components/events/evsci.c
index 47ac23f816..1c8352f5cf 100644
--- a/sys/contrib/dev/acpica/source/components/events/evsci.c
+++ b/sys/contrib/dev/acpica/source/components/events/evsci.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evxface.c b/sys/contrib/dev/acpica/source/components/events/evxface.c
index 01d5f00fbe..2d334fd455 100644
--- a/sys/contrib/dev/acpica/source/components/events/evxface.c
+++ b/sys/contrib/dev/acpica/source/components/events/evxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evxfevnt.c b/sys/contrib/dev/acpica/source/components/events/evxfevnt.c
index a345471170..9e7972eae8 100644
--- a/sys/contrib/dev/acpica/source/components/events/evxfevnt.c
+++ b/sys/contrib/dev/acpica/source/components/events/evxfevnt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/events/evxfgpe.c b/sys/contrib/dev/acpica/source/components/events/evxfgpe.c
index 1fe27e7593..bda4e6e93b 100644
--- a/sys/contrib/dev/acpica/source/components/events/evxfgpe.c
+++ b/sys/contrib/dev/acpica/source/components/events/evxfgpe.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -636,7 +636,7 @@ AcpiSetupGpeForWake (
          * permanently enabled and clear its ACPI_GPE_AUTO_ENABLED flag.
          */
         (void) AcpiEvRemoveGpeReference (GpeEventInfo);
-        GpeEventInfo->Flags &= ~~ACPI_GPE_AUTO_ENABLED;
+        GpeEventInfo->Flags &= ~ACPI_GPE_AUTO_ENABLED;
     }
 
     /*
diff --git a/sys/contrib/dev/acpica/source/components/events/evxfregn.c b/sys/contrib/dev/acpica/source/components/events/evxfregn.c
index 3febc81c21..04c880183a 100644
--- a/sys/contrib/dev/acpica/source/components/events/evxfregn.c
+++ b/sys/contrib/dev/acpica/source/components/events/evxfregn.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -163,13 +163,14 @@
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiInstallAddressSpaceHandler
+ * FUNCTION:    AcpiInstallAddressSpaceHandlerInternal
  *
  * PARAMETERS:  Device          - Handle for the device
  *              SpaceId         - The address space ID
  *              Handler         - Address of the handler
  *              Setup           - Address of the setup function
  *              Context         - Value passed to the handler on each access
+ *              Run_Reg         - Run _REG methods for this address space?
  *
  * RETURN:      Status
  *
@@ -180,16 +181,19 @@
  * are executed here, and these methods can only be safely executed after
  * the default handlers have been installed and the hardware has been
  * initialized (via AcpiEnableSubsystem.)
+ * To avoid this problem pass FALSE for Run_Reg and later on call
+ * AcpiExecuteRegMethods() to execute _REG.
  *
  ******************************************************************************/
 
-ACPI_STATUS
-AcpiInstallAddressSpaceHandler (
+static ACPI_STATUS
+AcpiInstallAddressSpaceHandlerInternal (
     ACPI_HANDLE             Device,
     ACPI_ADR_SPACE_TYPE     SpaceId,
     ACPI_ADR_SPACE_HANDLER  Handler,
     ACPI_ADR_SPACE_SETUP    Setup,
-    void                    *Context)
+    void                    *Context,
+    BOOLEAN                 Run_Reg)
 {
     ACPI_NAMESPACE_NODE     *Node;
     ACPI_STATUS             Status;
@@ -231,16 +235,42 @@ AcpiInstallAddressSpaceHandler (
 
     /* Run all _REG methods for this address space */
 
-    AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT);
-
+    if (Run_Reg)
+    {
+        AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT);
+    }
 
 UnlockAndExit:
     (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
     return_ACPI_STATUS (Status);
 }
 
+ACPI_STATUS
+AcpiInstallAddressSpaceHandler (
+    ACPI_HANDLE             Device,
+    ACPI_ADR_SPACE_TYPE     SpaceId,
+    ACPI_ADR_SPACE_HANDLER  Handler,
+    ACPI_ADR_SPACE_SETUP    Setup,
+    void                    *Context)
+{
+    return AcpiInstallAddressSpaceHandlerInternal (Device, SpaceId, Handler, Setup, Context, TRUE);
+}
+
 ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandler)
 
+ACPI_STATUS
+AcpiInstallAddressSpaceHandlerNo_Reg (
+    ACPI_HANDLE             Device,
+    ACPI_ADR_SPACE_TYPE     SpaceId,
+    ACPI_ADR_SPACE_HANDLER  Handler,
+    ACPI_ADR_SPACE_SETUP    Setup,
+    void                    *Context)
+{
+    return AcpiInstallAddressSpaceHandlerInternal (Device, SpaceId, Handler, Setup, Context, FALSE);
+}
+
+ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandlerNo_Reg)
+
 
 /*******************************************************************************
  *
@@ -362,7 +392,6 @@ AcpiRemoveAddressSpaceHandler (
 
             /* Now we can delete the handler object */
 
-            AcpiOsReleaseMutex (HandlerObj->AddressSpace.ContextMutex);
             AcpiUtRemoveReference (HandlerObj);
             goto UnlockAndExit;
         }
@@ -387,3 +416,62 @@ AcpiRemoveAddressSpaceHandler (
 }
 
 ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler)
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiExecuteRegMethods
+ *
+ * PARAMETERS:  Device          - Handle for the device
+ *              SpaceId         - The address space ID
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Execute _REG for all OpRegions of a given SpaceId.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiExecuteRegMethods (
+    ACPI_HANDLE             Device,
+    ACPI_ADR_SPACE_TYPE     SpaceId)
+{
+    ACPI_NAMESPACE_NODE     *Node;
+    ACPI_STATUS             Status;
+
+
+    ACPI_FUNCTION_TRACE (AcpiExecuteRegMethods);
+
+
+    /* Parameter validation */
+
+    if (!Device)
+    {
+        return_ACPI_STATUS (AE_BAD_PARAMETER);
+    }
+
+    Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
+    if (ACPI_FAILURE (Status))
+    {
+        return_ACPI_STATUS (Status);
+    }
+
+    /* Convert and validate the device handle */
+
+    Node = AcpiNsValidateHandle (Device);
+    if (Node)
+    {
+        /* Run all _REG methods for this address space */
+
+        AcpiEvExecuteRegMethods (Node, SpaceId, ACPI_REG_CONNECT);
+    }
+    else
+    {
+        Status = AE_BAD_PARAMETER;
+    }
+
+    (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
+    return_ACPI_STATUS (Status);
+}
+
+ACPI_EXPORT_SYMBOL (AcpiExecuteRegMethods)
diff --git a/sys/contrib/dev/acpica/source/components/executer/exconcat.c b/sys/contrib/dev/acpica/source/components/executer/exconcat.c
index bd7374e887..3010d9d4d0 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exconcat.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exconcat.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exconfig.c b/sys/contrib/dev/acpica/source/components/executer/exconfig.c
index ff26ade765..2edf1577ff 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exconfig.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exconfig.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -244,6 +244,7 @@ AcpiExLoadTableOp (
     ACPI_NAMESPACE_NODE     *ParentNode;
     ACPI_NAMESPACE_NODE     *StartNode;
     ACPI_NAMESPACE_NODE     *ParameterNode = NULL;
+    ACPI_OPERAND_OBJECT     *ReturnObj;
     ACPI_OPERAND_OBJECT     *DdbHandle;
     UINT32                  TableIndex;
 
@@ -251,6 +252,16 @@ AcpiExLoadTableOp (
     ACPI_FUNCTION_TRACE (ExLoadTableOp);
 
 
+    /* Create the return object */
+
+    ReturnObj = AcpiUtCreateIntegerObject ((UINT64) 0);
+    if (!ReturnObj)
+    {
+        return_ACPI_STATUS (AE_NO_MEMORY);
+    }
+
+    *ReturnDesc = ReturnObj;
+
     /* Find the ACPI table in the RSDT/XSDT */
 
     AcpiExExitInterpreter ();
@@ -268,13 +279,6 @@ AcpiExLoadTableOp (
 
         /* Table not found, return an Integer=0 and AE_OK */
 
-        DdbHandle = AcpiUtCreateIntegerObject ((UINT64) 0);
-        if (!DdbHandle)
-        {
-            return_ACPI_STATUS (AE_NO_MEMORY);
-        }
-
-        *ReturnDesc = DdbHandle;
         return_ACPI_STATUS (AE_OK);
     }
 
@@ -365,7 +369,13 @@ AcpiExLoadTableOp (
         }
     }
 
-    *ReturnDesc = DdbHandle;
+    /* Remove the reference to DdbHandle created by AcpiExAddTable above */
+
+    AcpiUtRemoveReference (DdbHandle);
+
+    /* Return -1 (non-zero) indicates success */
+
+    ReturnObj->Integer.Value = 0xFFFFFFFFFFFFFFFF;
     return_ACPI_STATUS (Status);
 }
 
@@ -423,7 +433,7 @@ AcpiExRegionRead (
  *
  * PARAMETERS:  ObjDesc         - Region or Buffer/Field where the table will be
  *                                obtained
- *              Target          - Where a handle to the table will be stored
+ *              Target          - Where the status of the load will be stored
  *              WalkState       - Current state
  *
  * RETURN:      Status
@@ -455,6 +465,18 @@ AcpiExLoadOp (
     ACPI_FUNCTION_TRACE (ExLoadOp);
 
 
+    if (Target->Common.DescriptorType == ACPI_DESC_TYPE_NAMED)
+    {
+        Target = AcpiNsGetAttachedObject (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Target));
+    }
+    if (Target->Common.Type != ACPI_TYPE_INTEGER)
+    {
+        ACPI_ERROR ((AE_INFO, "Type not integer: %X", Target->Common.Type));
+        return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
+    }
+
+    Target->Integer.Value = 0;
+
     /* Source Object can be either an OpRegion or a Buffer/Field */
 
     switch (ObjDesc->Common.Type)
@@ -616,8 +638,6 @@ AcpiExLoadOp (
     Status = AcpiExAddTable (TableIndex, &DdbHandle);
     if (ACPI_FAILURE (Status))
     {
-        /* On error, TablePtr was deallocated above */
-
         return_ACPI_STATUS (Status);
     }
 
@@ -627,22 +647,13 @@ AcpiExLoadOp (
     AcpiNsInitializeObjects ();
     AcpiExEnterInterpreter ();
 
-    /* Store the DdbHandle into the Target operand */
+    /* Remove the reference to DdbHandle created by AcpiExAddTable above */
 
-    Status = AcpiExStore (DdbHandle, Target, WalkState);
-    if (ACPI_FAILURE (Status))
-    {
-        (void) AcpiExUnloadTable (DdbHandle);
-
-        /* TablePtr was deallocated above */
-
-        AcpiUtRemoveReference (DdbHandle);
-        return_ACPI_STATUS (Status);
-    }
+    AcpiUtRemoveReference (DdbHandle);
 
-    /* Remove the reference by added by AcpiExStore above */
+    /* Return -1 (non-zero) indicates success */
 
-    AcpiUtRemoveReference (DdbHandle);
+    Target->Integer.Value = 0xFFFFFFFFFFFFFFFF;
     return_ACPI_STATUS (Status);
 }
 
diff --git a/sys/contrib/dev/acpica/source/components/executer/exconvrt.c b/sys/contrib/dev/acpica/source/components/executer/exconvrt.c
index 4f6077ff06..31666876da 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exconvrt.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exconvrt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -165,7 +165,8 @@ AcpiExConvertToAscii (
     UINT64                  Integer,
     UINT16                  Base,
     UINT8                   *String,
-    UINT8                   MaxLength);
+    UINT8                   MaxLength,
+    BOOLEAN                 LeadingZeros);
 
 
 /*******************************************************************************
@@ -387,7 +388,7 @@ AcpiExConvertToBuffer (
         /* Copy the string to the buffer */
 
         NewBuf = ReturnDesc->Buffer.Pointer;
-        strncpy ((char *) NewBuf, (char *) ObjDesc->String.Pointer,
+        memcpy ((char *) NewBuf, (char *) ObjDesc->String.Pointer,
             ObjDesc->String.Length);
         break;
 
@@ -412,6 +413,7 @@ AcpiExConvertToBuffer (
  *              Base            - ACPI_STRING_DECIMAL or ACPI_STRING_HEX
  *              String          - Where the string is returned
  *              DataWidth       - Size of data item to be converted, in bytes
+ *              LeadingZeros    - Allow leading zeros
  *
  * RETURN:      Actual string length
  *
@@ -424,7 +426,8 @@ AcpiExConvertToAscii (
     UINT64                  Integer,
     UINT16                  Base,
     UINT8                   *String,
-    UINT8                   DataWidth)
+    UINT8                   DataWidth,
+    BOOLEAN                 LeadingZeros)
 {
     UINT64                  Digit;
     UINT32                  i;
@@ -433,7 +436,8 @@ AcpiExConvertToAscii (
     UINT32                  HexLength;
     UINT32                  DecimalLength;
     UINT32                  Remainder;
-    BOOLEAN                 SupressZeros;
+    BOOLEAN                 SupressZeros = !LeadingZeros;
+    UINT8                   HexChar;
 
 
     ACPI_FUNCTION_ENTRY ();
@@ -464,7 +468,6 @@ AcpiExConvertToAscii (
             break;
         }
 
-        SupressZeros = TRUE;     /* No leading zeros */
         Remainder = 0;
 
         for (i = DecimalLength; i > 0; i--)
@@ -501,8 +504,18 @@ AcpiExConvertToAscii (
         {
             /* Get one hex digit, most significant digits first */
 
-            String[k] = (UINT8)
+            HexChar = (UINT8)
                 AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j));
+
+            /* Supress leading zeros until the first non-zero character */
+
+            if (HexChar == ACPI_ASCII_ZERO && SupressZeros)
+            {
+                continue;
+            }
+
+            SupressZeros = FALSE;
+            String[k] = HexChar;
             k++;
         }
         break;
@@ -556,6 +569,7 @@ AcpiExConvertToString (
     UINT32                  StringLength = 0;
     UINT16                  Base = 16;
     UINT8                   Separator = ',';
+    BOOLEAN                 LeadingZeros;
 
 
     ACPI_FUNCTION_TRACE_PTR (ExConvertToString, ObjDesc);
@@ -581,14 +595,25 @@ AcpiExConvertToString (
              * Make room for the maximum decimal number size
              */
             StringLength = ACPI_MAX_DECIMAL_DIGITS;
+            LeadingZeros = FALSE;
             Base = 10;
             break;
 
+        case ACPI_EXPLICIT_CONVERT_HEX:
+            /*
+             * From ToHexString.
+             *
+             * Supress leading zeros and append "0x"
+             */
+            StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth) + 2;
+            LeadingZeros = FALSE;
+            break;
         default:
 
             /* Two hex string characters for each integer byte */
 
             StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth);
+            LeadingZeros = TRUE;
             break;
         }
 
@@ -603,15 +628,29 @@ AcpiExConvertToString (
         }
 
         NewBuf = ReturnDesc->Buffer.Pointer;
+        if (Type == ACPI_EXPLICIT_CONVERT_HEX)
+        {
+            /* Append "0x" prefix for explicit hex conversion */
+
+            *NewBuf++ = '0';
+            *NewBuf++ = 'x';
+        }
 
         /* Convert integer to string */
 
         StringLength = AcpiExConvertToAscii (
-            ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth);
+            ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth, LeadingZeros);
 
         /* Null terminate at the correct place */
 
         ReturnDesc->String.Length = StringLength;
+        if (Type == ACPI_EXPLICIT_CONVERT_HEX)
+        {
+            /* Take "0x" prefix into account */
+
+            ReturnDesc->String.Length += 2;
+        }
+
         NewBuf [StringLength] = 0;
         break;
 
@@ -628,6 +667,7 @@ AcpiExConvertToString (
              * From ACPI: "If the input is a buffer, it is converted to a
              * a string of decimal values separated by commas."
              */
+            LeadingZeros = FALSE;
             Base = 10;
 
             /*
@@ -661,6 +701,7 @@ AcpiExConvertToString (
              *
              * Each hex number is prefixed with 0x (11/2018)
              */
+            LeadingZeros = TRUE;
             Separator = ' ';
             StringLength = (ObjDesc->Buffer.Length * 5);
             break;
@@ -674,6 +715,7 @@ AcpiExConvertToString (
              *
              * Each hex number is prefixed with 0x (11/2018)
              */
+            LeadingZeros = TRUE;
             Separator = ',';
             StringLength = (ObjDesc->Buffer.Length * 5);
             break;
@@ -715,7 +757,7 @@ AcpiExConvertToString (
             }
 
             NewBuf += AcpiExConvertToAscii (
-                (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
+                (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1, LeadingZeros);
 
             /* Each digit is separated by either a comma or space */
 
diff --git a/sys/contrib/dev/acpica/source/components/executer/excreate.c b/sys/contrib/dev/acpica/source/components/executer/excreate.c
index 18a3af2f11..de0bf9e362 100644
--- a/sys/contrib/dev/acpica/source/components/executer/excreate.c
+++ b/sys/contrib/dev/acpica/source/components/executer/excreate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exdebug.c b/sys/contrib/dev/acpica/source/components/executer/exdebug.c
index 39fc73521c..17e14d8098 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exdebug.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exdebug.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exdump.c b/sys/contrib/dev/acpica/source/components/executer/exdump.c
index b14cfe8443..a6d1e420eb 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exdump.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exdump.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exfield.c b/sys/contrib/dev/acpica/source/components/executer/exfield.c
index b33ab5b31a..4f4e7043ad 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exfield.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exfield.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -296,7 +296,8 @@ AcpiExReadDataFromField (
         (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
          ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
          ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI  ||
-         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT))
+         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT ||
+         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE))
     {
         /* SMBus, GSBus, IPMI serial */
 
@@ -469,7 +470,8 @@ AcpiExWriteDataToField (
         (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
          ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
          ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI  ||
-         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT))
+         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT ||
+         ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE))
     {
         /* SMBus, GSBus, IPMI serial */
 
diff --git a/sys/contrib/dev/acpica/source/components/executer/exfldio.c b/sys/contrib/dev/acpica/source/components/executer/exfldio.c
index 6a5a5fe1b8..b81235c245 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exfldio.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exfldio.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -262,7 +262,7 @@ AcpiExSetupRegion (
 #ifdef ACPI_UNDER_DEVELOPMENT
     /*
      * If the Field access is AnyAcc, we can now compute the optimal
-     * access (because we know know the length of the parent region)
+     * access (because we know the length of the parent region)
      */
     if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID))
     {
diff --git a/sys/contrib/dev/acpica/source/components/executer/exmisc.c b/sys/contrib/dev/acpica/source/components/executer/exmisc.c
index 220417b993..b24720c612 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exmisc.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exmisc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exmutex.c b/sys/contrib/dev/acpica/source/components/executer/exmutex.c
index 010f5bdd66..ba0ffe66fc 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exmutex.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exmutex.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exnames.c b/sys/contrib/dev/acpica/source/components/executer/exnames.c
index 0259072819..46996ba50c 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exnames.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exnames.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exoparg1.c b/sys/contrib/dev/acpica/source/components/executer/exoparg1.c
index 424e1e9925..339c4d3c8c 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exoparg1.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exoparg1.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -323,6 +323,7 @@ AcpiExOpcode_1A_0T_0R (
 }
 
 
+#ifdef _OBSOLETE_CODE /* Was originally used for Load() operator */
 /*******************************************************************************
  *
  * FUNCTION:    AcpiExOpcode_1A_1T_0R
@@ -352,10 +353,12 @@ AcpiExOpcode_1A_1T_0R (
 
     switch (WalkState->Opcode)
     {
+#ifdef _OBSOLETE_CODE
     case AML_LOAD_OP:
 
         Status = AcpiExLoadOp (Operand[0], Operand[1], WalkState);
         break;
+#endif
 
     default:                        /* Unknown opcode */
 
@@ -370,7 +373,7 @@ AcpiExOpcode_1A_1T_0R (
 
     return_ACPI_STATUS (Status);
 }
-
+#endif
 
 /*******************************************************************************
  *
@@ -382,6 +385,8 @@ AcpiExOpcode_1A_1T_0R (
  *
  * DESCRIPTION: Execute opcode with one argument, one target, and a
  *              return value.
+ *              January 2022: Added Load operator, with new ACPI 6.4
+ *              semantics.
  *
  ******************************************************************************/
 
@@ -411,6 +416,7 @@ AcpiExOpcode_1A_1T_1R (
     case AML_FIND_SET_LEFT_BIT_OP:
     case AML_FIND_SET_RIGHT_BIT_OP:
     case AML_FROM_BCD_OP:
+    case AML_LOAD_OP:
     case AML_TO_BCD_OP:
     case AML_CONDITIONAL_REF_OF_OP:
 
@@ -512,6 +518,18 @@ AcpiExOpcode_1A_1T_1R (
             }
             break;
 
+        case AML_LOAD_OP:               /* Result1 = Load (Operand[0], Result1) */
+
+            ReturnDesc->Integer.Value = 0;
+            Status = AcpiExLoadOp (Operand[0], ReturnDesc, WalkState);
+            if (ACPI_SUCCESS (Status))
+            {
+                /* Return -1 (non-zero) indicates success */
+
+                ReturnDesc->Integer.Value = 0xFFFFFFFFFFFFFFFF;
+            }
+            break;
+
         case AML_TO_BCD_OP:             /* ToBcd (Operand, Result)  */
 
             ReturnDesc->Integer.Value = 0;
diff --git a/sys/contrib/dev/acpica/source/components/executer/exoparg2.c b/sys/contrib/dev/acpica/source/components/executer/exoparg2.c
index d1fc7c1160..83b2d480bc 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exoparg2.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exoparg2.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exoparg3.c b/sys/contrib/dev/acpica/source/components/executer/exoparg3.c
index 02e73bd4de..872fbbdb44 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exoparg3.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exoparg3.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exoparg6.c b/sys/contrib/dev/acpica/source/components/executer/exoparg6.c
index 23f8e29560..00ca4f7275 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exoparg6.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exoparg6.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exprep.c b/sys/contrib/dev/acpica/source/components/executer/exprep.c
index c7b55c547b..c022231dea 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exprep.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exprep.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -611,6 +611,10 @@ AcpiExPrepFieldValue (
         if (Info->ConnectionNode)
         {
             SecondDesc = Info->ConnectionNode->Object;
+            if (SecondDesc == NULL)
+            {
+                break;
+            }
             if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID))
             {
                 Status = AcpiDsGetBufferArguments (SecondDesc);
diff --git a/sys/contrib/dev/acpica/source/components/executer/exregion.c b/sys/contrib/dev/acpica/source/components/executer/exregion.c
index cd1fa2eb0e..32cec4d38e 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exregion.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exregion.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -191,7 +191,6 @@ AcpiExSystemMemorySpaceHandler (
     ACPI_MEM_MAPPING        *Mm = MemInfo->CurMm;
     UINT32                  Length;
     ACPI_SIZE               MapLength;
-    ACPI_SIZE               PageBoundaryMapLength;
 #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED
     UINT32                  Remainder;
 #endif
@@ -298,27 +297,9 @@ AcpiExSystemMemorySpaceHandler (
         MapLength = (ACPI_SIZE)
             ((MemInfo->Address + MemInfo->Length) - Address);
 
-        /*
-         * If mapping the entire remaining portion of the region will cross
-         * a page boundary, just map up to the page boundary, do not cross.
-         * On some systems, crossing a page boundary while mapping regions
-         * can cause warnings if the pages have different attributes
-         * due to resource management.
-         *
-         * This has the added benefit of constraining a single mapping to
-         * one page, which is similar to the original code that used a 4k
-         * maximum window.
-         */
-        PageBoundaryMapLength = (ACPI_SIZE)
-            (ACPI_ROUND_UP (Address, ACPI_DEFAULT_PAGE_SIZE) - Address);
-        if (PageBoundaryMapLength == 0)
-        {
-            PageBoundaryMapLength = ACPI_DEFAULT_PAGE_SIZE;
-        }
-
-        if (MapLength > PageBoundaryMapLength)
+        if (MapLength > ACPI_DEFAULT_PAGE_SIZE)
         {
-            MapLength = PageBoundaryMapLength;
+            MapLength = ACPI_DEFAULT_PAGE_SIZE;
         }
 
         /* Create a new mapping starting at the address given */
diff --git a/sys/contrib/dev/acpica/source/components/executer/exresnte.c b/sys/contrib/dev/acpica/source/components/executer/exresnte.c
index 445a1b5e08..319d81eee5 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exresnte.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exresnte.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exresolv.c b/sys/contrib/dev/acpica/source/components/executer/exresolv.c
index 78b2604194..6dc658cff8 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exresolv.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exresolv.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exresop.c b/sys/contrib/dev/acpica/source/components/executer/exresop.c
index 619da90fb6..2bc79bea24 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exresop.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exresop.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exserial.c b/sys/contrib/dev/acpica/source/components/executer/exserial.c
index 776409db71..f574027676 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exserial.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exserial.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -359,6 +359,12 @@ AcpiExReadSerialBus (
         Function = ACPI_READ;
         break;
 
+    case ACPI_ADR_SPACE_FIXED_HARDWARE:
+
+        BufferLength = ACPI_FFH_INPUT_BUFFER_SIZE;
+        Function = ACPI_READ;
+        break;
+
     default:
         return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
     }
@@ -484,6 +490,12 @@ AcpiExWriteSerialBus (
         Function = ACPI_WRITE;
         break;
 
+    case ACPI_ADR_SPACE_FIXED_HARDWARE:
+
+        BufferLength = ACPI_FFH_INPUT_BUFFER_SIZE;
+        Function = ACPI_WRITE;
+        break;
+
     default:
         return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
     }
@@ -499,8 +511,7 @@ AcpiExWriteSerialBus (
     /* Copy the input buffer data to the transfer buffer */
 
     Buffer = BufferDesc->Buffer.Pointer;
-    DataLength = (BufferLength < SourceDesc->Buffer.Length ?
-        BufferLength : SourceDesc->Buffer.Length);
+    DataLength = ACPI_MIN (BufferLength, SourceDesc->Buffer.Length);
     memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
 
     /* Lock entire transaction if requested */
diff --git a/sys/contrib/dev/acpica/source/components/executer/exstore.c b/sys/contrib/dev/acpica/source/components/executer/exstore.c
index 79564db353..f39769119f 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exstore.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exstore.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exstoren.c b/sys/contrib/dev/acpica/source/components/executer/exstoren.c
index f43e67cdb3..71d0ad10df 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exstoren.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exstoren.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exstorob.c b/sys/contrib/dev/acpica/source/components/executer/exstorob.c
index 1ed937340c..026ab5bd2b 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exstorob.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exstorob.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/executer/exsystem.c b/sys/contrib/dev/acpica/source/components/executer/exsystem.c
index cf10a5e7bd..1f42625a60 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exsystem.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exsystem.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -265,7 +265,7 @@ AcpiExSystemWaitMutex (
  *
  * FUNCTION:    AcpiExSystemDoStall
  *
- * PARAMETERS:  HowLong         - The amount of time to stall,
+ * PARAMETERS:  HowLongUs       - The amount of time to stall,
  *                                in microseconds
  *
  * RETURN:      Status
@@ -280,7 +280,7 @@ AcpiExSystemWaitMutex (
 
 ACPI_STATUS
 AcpiExSystemDoStall (
-    UINT32                  HowLong)
+    UINT32                  HowLongUs)
 {
     ACPI_STATUS             Status = AE_OK;
 
@@ -288,21 +288,26 @@ AcpiExSystemDoStall (
     ACPI_FUNCTION_ENTRY ();
 
 
-    if (HowLong > 255) /* 255 microseconds */
+    if (HowLongUs > 255)
     {
         /*
-         * Longer than 255 usec, this is an error
+         * Longer than 255 microseconds, this is an error
          *
          * (ACPI specifies 100 usec as max, but this gives some slack in
          * order to support existing BIOSs)
          */
-        ACPI_ERROR ((AE_INFO,
-            "Time parameter is too large (%u)", HowLong));
+        ACPI_ERROR_ONCE ((AE_INFO,
+            "Time parameter is too large (%u)", HowLongUs));
         Status = AE_AML_OPERAND_VALUE;
     }
     else
     {
-        AcpiOsStall (HowLong);
+        if (HowLongUs > 100)
+        {
+            ACPI_WARNING_ONCE ((AE_INFO,
+                "Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.", HowLongUs));
+        }
+        AcpiOsStall (HowLongUs);
     }
 
     return (Status);
@@ -313,7 +318,7 @@ AcpiExSystemDoStall (
  *
  * FUNCTION:    AcpiExSystemDoSleep
  *
- * PARAMETERS:  HowLong         - The amount of time to sleep,
+ * PARAMETERS:  HowLongMs       - The amount of time to sleep,
  *                                in milliseconds
  *
  * RETURN:      None
@@ -324,7 +329,7 @@ AcpiExSystemDoStall (
 
 ACPI_STATUS
 AcpiExSystemDoSleep (
-    UINT64                  HowLong)
+    UINT64                  HowLongMs)
 {
     ACPI_FUNCTION_ENTRY ();
 
@@ -337,12 +342,12 @@ AcpiExSystemDoSleep (
      * For compatibility with other ACPI implementations and to prevent
      * accidental deep sleeps, limit the sleep time to something reasonable.
      */
-    if (HowLong > ACPI_MAX_SLEEP)
+    if (HowLongMs > ACPI_MAX_SLEEP)
     {
-        HowLong = ACPI_MAX_SLEEP;
+        HowLongMs = ACPI_MAX_SLEEP;
     }
 
-    AcpiOsSleep (HowLong);
+    AcpiOsSleep (HowLongMs);
 
     /* And now we must get the interpreter again */
 
diff --git a/sys/contrib/dev/acpica/source/components/executer/extrace.c b/sys/contrib/dev/acpica/source/components/executer/extrace.c
index 22c2b8bb86..2d596f2b57 100644
--- a/sys/contrib/dev/acpica/source/components/executer/extrace.c
+++ b/sys/contrib/dev/acpica/source/components/executer/extrace.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -269,6 +269,68 @@ AcpiExGetTraceEventName (
 
 #endif
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiExTraceArgs
+ *
+ * PARAMETERS:  Params            - AML method arguments
+ *              Count             - numer of method arguments
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Trace any arguments
+ *
+ ******************************************************************************/
+
+void
+AcpiExTraceArgs(ACPI_OPERAND_OBJECT **Params, UINT32 Count)
+{
+    UINT32 i;
+
+    ACPI_FUNCTION_NAME(ExTraceArgs);
+
+    for (i = 0; i < Count; i++)
+    {
+        ACPI_OPERAND_OBJECT *obj_desc = Params[i];
+
+        if (!i)
+        {
+            ACPI_DEBUG_PRINT((ACPI_DB_TRACE_POINT, " "));
+        }
+
+        switch (obj_desc->Common.Type)
+        {
+        case ACPI_TYPE_INTEGER:
+            ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "%lx", obj_desc->Integer.Value));
+            break;
+
+        case ACPI_TYPE_STRING:
+            if (!obj_desc->String.Length)
+            {
+                ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "NULL"));
+                break;
+            }
+            if (ACPI_IS_DEBUG_ENABLED(ACPI_LV_TRACE_POINT, _COMPONENT))
+            {
+                AcpiUtPrintString(obj_desc->String.Pointer, ACPI_UINT8_MAX);
+            }
+            break;
+
+        default:
+            ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "Unknown"));
+            break;
+        }
+
+        if ((i + 1) == Count)
+        {
+            ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, "\n"));
+        }
+        else
+        {
+            ACPI_DEBUG_PRINT_RAW((ACPI_DB_TRACE_POINT, ", "));
+        }
+    }
+}
 
 /*******************************************************************************
  *
@@ -299,9 +361,9 @@ AcpiExTracePoint (
     if (Pathname)
     {
         ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT,
-            "%s %s [0x%p:%s] execution.\n",
+            "%s %s [%s] execution.\n",
             AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End",
-            Aml, Pathname));
+            Pathname));
     }
     else
     {
diff --git a/sys/contrib/dev/acpica/source/components/executer/exutils.c b/sys/contrib/dev/acpica/source/components/executer/exutils.c
index 86114c8ec8..f7472a299e 100644
--- a/sys/contrib/dev/acpica/source/components/executer/exutils.c
+++ b/sys/contrib/dev/acpica/source/components/executer/exutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwacpi.c b/sys/contrib/dev/acpica/source/components/hardware/hwacpi.c
index 71b71cbc64..21081dc4a3 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwacpi.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwacpi.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwesleep.c b/sys/contrib/dev/acpica/source/components/hardware/hwesleep.c
index 19463e5ad3..c6ed4246eb 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwesleep.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwesleep.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwgpe.c b/sys/contrib/dev/acpica/source/components/hardware/hwgpe.c
index bf333a3fee..bb4ebc0225 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwgpe.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwgpe.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwpci.c b/sys/contrib/dev/acpica/source/components/hardware/hwpci.c
index 1b0721e3a6..32fb6af53f 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwpci.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwpci.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwregs.c b/sys/contrib/dev/acpica/source/components/hardware/hwregs.c
index 712a0887b4..de375d9972 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwregs.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwregs.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -633,7 +633,7 @@ AcpiHwGetBitRegisterInfo (
  * RETURN:      Status
  *
  * DESCRIPTION: Write the PM1 A/B control registers. These registers are
- *              different than than the PM1 A/B status and enable registers
+ *              different than the PM1 A/B status and enable registers
  *              in that different values can be written to the A/B registers.
  *              Most notably, the SLP_TYP bits can be different, as per the
  *              values returned from the _Sx predefined methods.
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwsleep.c b/sys/contrib/dev/acpica/source/components/hardware/hwsleep.c
index 4d581da3c6..bb38234ec7 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwsleep.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwsleep.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwtimer.c b/sys/contrib/dev/acpica/source/components/hardware/hwtimer.c
index 0e4102db4c..68cf627093 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwtimer.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwtimer.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwvalid.c b/sys/contrib/dev/acpica/source/components/hardware/hwvalid.c
index 96b5ac7e6e..0dfe4d2577 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwvalid.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwvalid.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -169,8 +169,8 @@ AcpiHwValidateIoRequest (
  *
  * The table is used to implement the Microsoft port access rules that
  * first appeared in Windows XP. Some ports are always illegal, and some
- * ports are only illegal if the BIOS calls _OSI with a WinXP string or
- * later (meaning that the BIOS itelf is post-XP.)
+ * ports are only illegal if the BIOS calls _OSI with nothing newer than
+ * the specific _OSI strings.
  *
  * This provides ACPICA with the desired port protections and
  * Microsoft compatibility.
@@ -301,8 +301,8 @@ AcpiHwValidateIoRequest (
         if ((Address <= PortInfo->End) && (LastAddress >= PortInfo->Start))
         {
             /* Port illegality may depend on the _OSI calls made by the BIOS */
-
-            if (AcpiGbl_OsiData >= PortInfo->OsiDependency)
+            if (PortInfo->OsiDependency == ACPI_ALWAYS_ILLEGAL ||
+                AcpiGbl_OsiData == PortInfo->OsiDependency)
             {
                 ACPI_DEBUG_PRINT ((ACPI_DB_VALUES,
                     "Denied AML access to port 0x%8.8X%8.8X/%X (%s 0x%.4X-0x%.4X)\n",
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwxface.c b/sys/contrib/dev/acpica/source/components/hardware/hwxface.c
index 5daed99ad7..5075fdcff9 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwxface.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/hardware/hwxfsleep.c b/sys/contrib/dev/acpica/source/components/hardware/hwxfsleep.c
index 106dea0dbc..eefc239bcb 100644
--- a/sys/contrib/dev/acpica/source/components/hardware/hwxfsleep.c
+++ b/sys/contrib/dev/acpica/source/components/hardware/hwxfsleep.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -159,13 +159,11 @@
 
 /* Local prototypes */
 
-#if (!ACPI_REDUCED_HARDWARE)
 static ACPI_STATUS
 AcpiHwSetFirmwareWakingVector (
     ACPI_TABLE_FACS         *Facs,
     ACPI_PHYSICAL_ADDRESS   PhysicalAddress,
     ACPI_PHYSICAL_ADDRESS   PhysicalAddress64);
-#endif
 
 static ACPI_STATUS
 AcpiHwSleepDispatch (
@@ -199,13 +197,6 @@ static ACPI_SLEEP_FUNCTIONS         AcpiSleepDispatch[] =
 };
 
 
-/*
- * These functions are removed for the ACPI_REDUCED_HARDWARE case:
- *      AcpiSetFirmwareWakingVector
- *      AcpiEnterSleepStateS4bios
- */
-
-#if (!ACPI_REDUCED_HARDWARE)
 /*******************************************************************************
  *
  * FUNCTION:    AcpiHwSetFirmwareWakingVector
@@ -298,6 +289,12 @@ AcpiSetFirmwareWakingVector (
 ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector)
 
 
+/*
+ * These functions are removed for the ACPI_REDUCED_HARDWARE case:
+ *      AcpiEnterSleepStateS4bios
+ */
+
+#if (!ACPI_REDUCED_HARDWARE)
 /*******************************************************************************
  *
  * FUNCTION:    AcpiEnterSleepStateS4bios
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsaccess.c b/sys/contrib/dev/acpica/source/components/namespace/nsaccess.c
index 4286223efe..5f044e1985 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsaccess.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsaccess.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsalloc.c b/sys/contrib/dev/acpica/source/components/namespace/nsalloc.c
index 1deb87c6b2..d4ff32d596 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsalloc.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsalloc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsarguments.c b/sys/contrib/dev/acpica/source/components/namespace/nsarguments.c
index fe51156578..6676abe072 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsarguments.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsarguments.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsconvert.c b/sys/contrib/dev/acpica/source/components/namespace/nsconvert.c
index 7d68386d5f..ae039a1026 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsconvert.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsconvert.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsdump.c b/sys/contrib/dev/acpica/source/components/namespace/nsdump.c
index 63a449ab6f..e3db14a11e 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsdump.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsdump.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsdumpdv.c b/sys/contrib/dev/acpica/source/components/namespace/nsdumpdv.c
index 55ab899d28..86471b854a 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsdumpdv.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsdumpdv.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nseval.c b/sys/contrib/dev/acpica/source/components/namespace/nseval.c
index 1b80202bae..98353ea6c6 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nseval.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nseval.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsinit.c b/sys/contrib/dev/acpica/source/components/namespace/nsinit.c
index cc15644fc4..50a2290ac3 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsinit.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsinit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsload.c b/sys/contrib/dev/acpica/source/components/namespace/nsload.c
index 0a368ab3e6..5e90b3b6ed 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsload.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsload.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsnames.c b/sys/contrib/dev/acpica/source/components/namespace/nsnames.c
index 4c0f6991fe..64a9109cf5 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsnames.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsnames.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -368,7 +368,7 @@ AcpiNsBuildNormalizedPath (
     BOOLEAN                 NoTrailing)
 {
     UINT32                  Length = 0, i;
-    char                    Name[ACPI_NAMESEG_SIZE];
+    char                    Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     BOOLEAN                 DoNoTrailing;
     char                    c, *Left, *Right;
     ACPI_NAMESPACE_NODE     *NextNode;
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsobject.c b/sys/contrib/dev/acpica/source/components/namespace/nsobject.c
index 529d816f43..aec3991bd3 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsobject.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsobject.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsparse.c b/sys/contrib/dev/acpica/source/components/namespace/nsparse.c
index 5f7973aa1a..32c7d30889 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsparse.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsparse.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nspredef.c b/sys/contrib/dev/acpica/source/components/namespace/nspredef.c
index 410eaeb0fc..7a0e5005e3 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nspredef.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nspredef.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsprepkg.c b/sys/contrib/dev/acpica/source/components/namespace/nsprepkg.c
index e56bcb5d16..e26269aaed 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsprepkg.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsprepkg.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsrepair.c b/sys/contrib/dev/acpica/source/components/namespace/nsrepair.c
index 24094714b5..21f0c92057 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsrepair.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsrepair.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -328,9 +328,10 @@ AcpiNsSimpleRepair (
      */
     if (!ReturnObject)
     {
-        if (ExpectedBtypes && (!(ExpectedBtypes & ACPI_RTYPE_NONE)))
+        if (ExpectedBtypes)
         {
-            if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
+            if (!(ExpectedBtypes & ACPI_RTYPE_NONE) &&
+                PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
             {
                 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
                     ACPI_WARN_ALWAYS, "Found unexpected NULL package element"));
@@ -342,13 +343,14 @@ AcpiNsSimpleRepair (
                     return (AE_OK); /* Repair was successful */
                 }
             }
-            else
+
+            if (ExpectedBtypes != ACPI_RTYPE_NONE)
             {
                 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname,
-                    ACPI_WARN_ALWAYS, "Missing expected return value"));
+                                       ACPI_WARN_ALWAYS,
+                                       "Missing expected return value"));
+                return (AE_AML_NO_RETURN_VALUE);
             }
-
-            return (AE_AML_NO_RETURN_VALUE);
         }
     }
 
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/source/components/namespace/nsrepair2.c
index 40f0634de8..0b43412b4e 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsrepair2.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsrepair2.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -169,7 +169,7 @@ ACPI_STATUS (*ACPI_REPAIR_FUNCTION) (
 
 typedef struct acpi_repair_info
 {
-    char                    Name[ACPI_NAMESEG_SIZE];
+    char                    Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     ACPI_REPAIR_FUNCTION    RepairFunction;
 
 } ACPI_REPAIR_INFO;
@@ -565,13 +565,6 @@ AcpiNsRepair_CID (
 
             (*ElementPtr)->Common.ReferenceCount =
                 OriginalRefCount;
-
-            /*
-             * The OriginalElement holds a reference from the package object
-             * that represents _HID. Since a new element was created by _HID,
-             * remove the reference from the _CID package.
-             */
-            AcpiUtRemoveReference (OriginalElement);
         }
 
         ElementPtr++;
@@ -702,7 +695,7 @@ AcpiNsRepair_HID (
     char                    *Dest;
 
 
-    ACPI_FUNCTION_NAME (NsRepair_HID);
+    ACPI_FUNCTION_TRACE (NsRepair_HID);
 
 
     /* We only care about string _HID objects (not integers) */
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nssearch.c b/sys/contrib/dev/acpica/source/components/namespace/nssearch.c
index 408a38e688..df61f280ea 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nssearch.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nssearch.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsutils.c b/sys/contrib/dev/acpica/source/components/namespace/nsutils.c
index 1ce7fe407e..5f9faa8e37 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsutils.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsutils.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -500,7 +500,7 @@ AcpiNsBuildInternalName (
  *
  * PARAMETERS:  *ExternalName           - External representation of name
  *              **Converted Name        - Where to return the resulting
- *                                        internal represention of the name
+ *                                        internal representation of the name
  *
  * RETURN:      Status
  *
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nswalk.c b/sys/contrib/dev/acpica/source/components/namespace/nswalk.c
index 50c5ed5bae..18cb6921c4 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nswalk.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nswalk.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -322,6 +322,10 @@ AcpiNsWalkNamespace (
     if (StartNode == ACPI_ROOT_OBJECT)
     {
         StartNode = AcpiGbl_RootNode;
+        if (!StartNode)
+        {
+            return_ACPI_STATUS (AE_NO_NAMESPACE);
+        }
     }
 
     /* Null child means "get first node" */
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsxfeval.c b/sys/contrib/dev/acpica/source/components/namespace/nsxfeval.c
index b067f6e819..244817c581 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsxfeval.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsxfeval.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsxfname.c b/sys/contrib/dev/acpica/source/components/namespace/nsxfname.c
index 7a7393b61a..7779ee3fc4 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsxfname.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsxfname.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -192,7 +192,7 @@ AcpiNsCopyDeviceId (
 ACPI_STATUS
 AcpiGetHandle (
     ACPI_HANDLE             Parent,
-    ACPI_STRING             Pathname,
+    const char              *Pathname,
     ACPI_HANDLE             *RetHandle)
 {
     ACPI_STATUS             Status;
diff --git a/sys/contrib/dev/acpica/source/components/namespace/nsxfobj.c b/sys/contrib/dev/acpica/source/components/namespace/nsxfobj.c
index fb08e76f62..aa906f9ecb 100644
--- a/sys/contrib/dev/acpica/source/components/namespace/nsxfobj.c
+++ b/sys/contrib/dev/acpica/source/components/namespace/nsxfobj.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/psargs.c b/sys/contrib/dev/acpica/source/components/parser/psargs.c
index 895feba0ac..36afbd73ba 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psargs.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psargs.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -170,6 +170,10 @@ static ACPI_PARSE_OBJECT *
 AcpiPsGetNextField (
     ACPI_PARSE_STATE        *ParserState);
 
+static void
+AcpiPsFreeFieldList (
+    ACPI_PARSE_OBJECT       *Start);
+
 
 /*******************************************************************************
  *
@@ -872,6 +876,43 @@ AcpiPsGetNextField (
     return_PTR (Field);
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiPsFreeFieldList
+ *
+ * PARAMETERS:  Start               - First Op in field list
+ *
+ * RETURN:      None.
+ *
+ * DESCRIPTION: Free all Op objects inside a field list.
+ *
+ ******************************************************************************/
+
+static void
+AcpiPsFreeFieldList (
+    ACPI_PARSE_OBJECT	*Start)
+{
+    ACPI_PARSE_OBJECT *Current = Start;
+    ACPI_PARSE_OBJECT *Next;
+    ACPI_PARSE_OBJECT *Arg;
+
+    while (Current)
+    {
+        Next = Current->Common.Next;
+
+        /* AML_INT_CONNECTION_OP can have a single argument */
+
+        Arg = AcpiPsGetArg (Current, 0);
+        if (Arg)
+        {
+            AcpiPsFreeOp (Arg);
+        }
+
+        AcpiPsFreeOp(Current);
+        Current = Next;
+    }
+}
+
 
 /*******************************************************************************
  *
@@ -948,6 +989,11 @@ AcpiPsGetNextArg (
                 Field = AcpiPsGetNextField (ParserState);
                 if (!Field)
                 {
+                    if (Arg)
+                    {
+                        AcpiPsFreeFieldList(Arg);
+                    }
+
                     return_ACPI_STATUS (AE_NO_MEMORY);
                 }
 
@@ -1016,6 +1062,11 @@ AcpiPsGetNextArg (
 
             Status = AcpiPsGetNextNamepath (WalkState, ParserState,
                 Arg, ACPI_NOT_METHOD_CALL);
+            if (ACPI_FAILURE(Status))
+            {
+                AcpiPsFreeOp (Arg);
+                return_ACPI_STATUS (Status);
+            }
         }
         else
         {
@@ -1048,6 +1099,11 @@ AcpiPsGetNextArg (
 
             Status = AcpiPsGetNextNamepath (WalkState, ParserState,
                 Arg, ACPI_POSSIBLE_METHOD_CALL);
+            if (ACPI_FAILURE(Status))
+            {
+                AcpiPsFreeOp (Arg);
+                return_ACPI_STATUS (Status);
+            }
 
             if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP)
             {
diff --git a/sys/contrib/dev/acpica/source/components/parser/psloop.c b/sys/contrib/dev/acpica/source/components/parser/psloop.c
index 0ff42ce8ee..f673179c17 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psloop.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psloop.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/psobject.c b/sys/contrib/dev/acpica/source/components/parser/psobject.c
index c0c3e9654c..146a487995 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psobject.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psobject.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -815,7 +815,8 @@ AcpiPsCompleteFinalOp (
     ACPI_PARSE_OBJECT       *Op,
     ACPI_STATUS             Status)
 {
-    ACPI_STATUS             Status2;
+    ACPI_STATUS             ReturnStatus = Status;
+    BOOLEAN                 Ascending = TRUE;
 
 
     ACPI_FUNCTION_TRACE_PTR (PsCompleteFinalOp, WalkState);
@@ -832,7 +833,7 @@ AcpiPsCompleteFinalOp (
     {
         if (Op)
         {
-            if (WalkState->AscendingCallback != NULL)
+            if (Ascending && WalkState->AscendingCallback != NULL)
             {
                 WalkState->Op = Op;
                 WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
@@ -851,41 +852,28 @@ AcpiPsCompleteFinalOp (
 
                 if (Status == AE_CTRL_TERMINATE)
                 {
-                    Status = AE_OK;
-
-                    /* Clean up */
-                    do
-                    {
-                        if (Op)
-                        {
-                            Status2 = AcpiPsCompleteThisOp (WalkState, Op);
-                            if (ACPI_FAILURE (Status2))
-                            {
-                                return_ACPI_STATUS (Status2);
-                            }
-                        }
-
-                        AcpiPsPopScope (&(WalkState->ParserState), &Op,
-                            &WalkState->ArgTypes, &WalkState->ArgCount);
-
-                    } while (Op);
-
-                    return_ACPI_STATUS (Status);
+                    Ascending = FALSE;
+                    ReturnStatus = AE_CTRL_TERMINATE;
                 }
 
                 else if (ACPI_FAILURE (Status))
                 {
                     /* First error is most important */
 
-                    (void) AcpiPsCompleteThisOp (WalkState, Op);
-                    return_ACPI_STATUS (Status);
+                    Ascending = FALSE;
+                    ReturnStatus = Status;
                 }
             }
 
-            Status2 = AcpiPsCompleteThisOp (WalkState, Op);
-            if (ACPI_FAILURE (Status2))
+            Status = AcpiPsCompleteThisOp (WalkState, Op);
+            if (ACPI_FAILURE (Status))
             {
-                return_ACPI_STATUS (Status2);
+                Ascending = FALSE;
+                if (ACPI_SUCCESS (ReturnStatus) ||
+                    ReturnStatus == AE_CTRL_TERMINATE)
+                {
+                    ReturnStatus = Status;
+                }
             }
         }
 
@@ -894,5 +882,5 @@ AcpiPsCompleteFinalOp (
 
     } while (Op);
 
-    return_ACPI_STATUS (Status);
+    return_ACPI_STATUS (ReturnStatus);
 }
diff --git a/sys/contrib/dev/acpica/source/components/parser/psopcode.c b/sys/contrib/dev/acpica/source/components/parser/psopcode.c
index 4f153303fb..9da094f1ea 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psopcode.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psopcode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -375,7 +375,7 @@ const ACPI_OPCODE_INFO    AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] =
 /* 47 */ ACPI_OP ("Event",              ARGP_EVENT_OP,             ARGI_EVENT_OP,              ACPI_TYPE_EVENT,             AML_CLASS_NAMED_OBJECT,    AML_TYPE_NAMED_SIMPLE,    AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ),
 /* 48 */ ACPI_OP ("CondRefOf",          ARGP_COND_REF_OF_OP,       ARGI_COND_REF_OF_OP,        ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_1A_1T_1R,   AML_FLAGS_EXEC_1A_1T_1R),
 /* 49 */ ACPI_OP ("CreateField",        ARGP_CREATE_FIELD_OP,      ARGI_CREATE_FIELD_OP,       ACPI_TYPE_BUFFER_FIELD,      AML_CLASS_CREATE,          AML_TYPE_CREATE_FIELD,    AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE),
-/* 4A */ ACPI_OP ("Load",               ARGP_LOAD_OP,              ARGI_LOAD_OP,               ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_1A_1T_0R,   AML_FLAGS_EXEC_1A_1T_0R),
+/* 4A */ ACPI_OP ("Load",               ARGP_LOAD_OP,              ARGI_LOAD_OP,               ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_1A_1T_1R,   AML_FLAGS_EXEC_1A_1T_1R),
 /* 4B */ ACPI_OP ("Stall",              ARGP_STALL_OP,             ARGI_STALL_OP,              ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_1A_0T_0R,   AML_FLAGS_EXEC_1A_0T_0R),
 /* 4C */ ACPI_OP ("Sleep",              ARGP_SLEEP_OP,             ARGI_SLEEP_OP,              ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_1A_0T_0R,   AML_FLAGS_EXEC_1A_0T_0R),
 /* 4D */ ACPI_OP ("Acquire",            ARGP_ACQUIRE_OP,           ARGI_ACQUIRE_OP,            ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_2A_0T_1R,   AML_FLAGS_EXEC_2A_0T_1R),
@@ -436,7 +436,7 @@ const ACPI_OPCODE_INFO    AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] =
 
 /* ACPI 3.0 opcodes */
 
-/* 7E */ ACPI_OP ("Timer",              ARGP_TIMER_OP,             ARGI_TIMER_OP,              ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_0A_0T_1R,   AML_FLAGS_EXEC_0A_0T_1R),
+/* 7E */ ACPI_OP ("Timer",              ARGP_TIMER_OP,             ARGI_TIMER_OP,              ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_0A_0T_1R,   AML_FLAGS_EXEC_0A_0T_1R | AML_NO_OPERAND_RESOLVE),
 
 /* ACPI 5.0 opcodes */
 
diff --git a/sys/contrib/dev/acpica/source/components/parser/psopinfo.c b/sys/contrib/dev/acpica/source/components/parser/psopinfo.c
index 30447c78b1..21e21b0516 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psopinfo.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psopinfo.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -180,8 +180,8 @@ const ACPI_OPCODE_INFO *
 AcpiPsGetOpcodeInfo (
     UINT16                  Opcode)
 {
-#ifdef ACPI_DEBUG_OUTPUT
-    const char              *OpcodeName = "Unknown AML opcode";
+#if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT
+    const char 		    *OpcodeName = "Unknown AML opcode";
 #endif
 
     ACPI_FUNCTION_NAME (PsGetOpcodeInfo);
@@ -249,12 +249,12 @@ AcpiPsGetOpcodeInfo (
     default:
         break;
     }
-#endif
 
     /* Unknown AML opcode */
 
     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
         "%s [%4.4X]\n", OpcodeName, Opcode));
+#endif
 
     return (&AcpiGbl_AmlOpInfo [_UNK]);
 }
diff --git a/sys/contrib/dev/acpica/source/components/parser/psparse.c b/sys/contrib/dev/acpica/source/components/parser/psparse.c
index 3b2a3c4c18..5b6ddc7d0f 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psparse.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psparse.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/psscope.c b/sys/contrib/dev/acpica/source/components/parser/psscope.c
index cbe575dc52..5a10f8c9b8 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psscope.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psscope.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/pstree.c b/sys/contrib/dev/acpica/source/components/parser/pstree.c
index 7f92b773ac..71485e77fb 100644
--- a/sys/contrib/dev/acpica/source/components/parser/pstree.c
+++ b/sys/contrib/dev/acpica/source/components/parser/pstree.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/psutils.c b/sys/contrib/dev/acpica/source/components/parser/psutils.c
index 223f68db6d..b040ef0ccd 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psutils.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/pswalk.c b/sys/contrib/dev/acpica/source/components/parser/pswalk.c
index 0d5b78ddb2..093da84e6c 100644
--- a/sys/contrib/dev/acpica/source/components/parser/pswalk.c
+++ b/sys/contrib/dev/acpica/source/components/parser/pswalk.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/parser/psxface.c b/sys/contrib/dev/acpica/source/components/parser/psxface.c
index 102033fee8..818be3a850 100644
--- a/sys/contrib/dev/acpica/source/components/parser/psxface.c
+++ b/sys/contrib/dev/acpica/source/components/parser/psxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsaddr.c b/sys/contrib/dev/acpica/source/components/resources/rsaddr.c
index 06f8c44ae6..8c3eb456f6 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsaddr.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsaddr.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -431,13 +431,13 @@ AcpiRsGetAddressCommon (
     ACPI_RESOURCE           *Resource,
     AML_RESOURCE            *Aml)
 {
-    ACPI_FUNCTION_ENTRY ();
-
+    ACPI_FUNCTION_ENTRY();
 
     /* Validate the Resource Type */
 
     if ((Aml->Address.ResourceType > 2) &&
-        (Aml->Address.ResourceType < 0xC0))
+        (Aml->Address.ResourceType < 0xC0) &&
+        (Aml->Address.ResourceType != 0x0A))
     {
         return (FALSE);
     }
@@ -492,7 +492,6 @@ AcpiRsSetAddressCommon (
 {
     ACPI_FUNCTION_ENTRY ();
 
-
     /* Set the Resource Type and General Flags */
 
     (void) AcpiRsConvertResourceToAml (
diff --git a/sys/contrib/dev/acpica/source/components/resources/rscalc.c b/sys/contrib/dev/acpica/source/components/resources/rscalc.c
index 2e878e80f0..5818038652 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rscalc.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rscalc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -480,6 +480,13 @@ AcpiRsGetAmlLength (
 
             break;
 
+        case ACPI_RESOURCE_TYPE_CLOCK_INPUT:
+
+            TotalSize = (ACPI_RS_LENGTH) (TotalSize +
+                Resource->Data.ClockInput.ResourceSource.StringLength);
+
+            break;
+
 
         case ACPI_RESOURCE_TYPE_SERIAL_BUS:
 
@@ -733,7 +740,7 @@ AcpiRsGetListLength (
             }
             break;
 
-        case ACPI_RESOURCE_NAME_SERIAL_BUS:
+        case ACPI_RESOURCE_NAME_SERIAL_BUS: {
 
             MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[
                 AmlResource->CommonSerialBus.Type];
@@ -741,6 +748,7 @@ AcpiRsGetListLength (
                 AmlResource->CommonSerialBus.ResourceLength -
                 MinimumAmlResourceLength;
             break;
+        }
 
         case ACPI_RESOURCE_NAME_PIN_CONFIG:
 
@@ -789,6 +797,12 @@ AcpiRsGetListLength (
 
             break;
 
+        case ACPI_RESOURCE_NAME_CLOCK_INPUT:
+            ExtraStructBytes = AcpiRsStreamOptionLength (
+                ResourceLength, MinimumAmlResourceLength);
+
+            break;
+
         default:
 
             break;
diff --git a/sys/contrib/dev/acpica/source/components/resources/rscreate.c b/sys/contrib/dev/acpica/source/components/resources/rscreate.c
index 8443d7522e..ac2bf12dbb 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rscreate.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rscreate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsdump.c b/sys/contrib/dev/acpica/source/components/resources/rsdump.c
index 1195dfc3ce..df6f87ecc8 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsdump.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsdump.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -231,6 +231,7 @@ AcpiRsDumpDescriptor (
     ACPI_RSDUMP_INFO        *Table);
 
 
+#ifdef ACPI_DEBUGGER
 /*******************************************************************************
  *
  * FUNCTION:    AcpiRsDumpResourceList
@@ -360,7 +361,7 @@ AcpiRsDumpIrqList (
             PrtElement, PrtElement->Length);
     }
 }
-
+#endif
 
 /*******************************************************************************
  *
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsdumpinfo.c b/sys/contrib/dev/acpica/source/components/resources/rsdumpinfo.c
index 26f4993d5a..9528d4c9fe 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsdumpinfo.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsdumpinfo.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -374,6 +374,17 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinFunction[10] =
     {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (PinFunction.VendorData),          "VendorData",               NULL},
 };
 
+ACPI_RSDUMP_INFO        AcpiRsDumpClockInput[7] =
+{
+    {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpClockInput),         "ClockInput",            NULL},
+    {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (ClockInput.RevisionId),            "RevisionId",            NULL},
+    {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (ClockInput.FrequencyNumerator),    "FrequencyNumerator",    NULL},
+    {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (ClockInput.FrequencyDivisor),      "FrequencyDivisor",      NULL},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ClockInput.Scale),                 "Scale",                 AcpiGbl_ClockInputScale},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ClockInput.Mode),                  "Mode",                  AcpiGbl_ClockInputMode},
+    {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (ClockInput.ResourceSource),        "ResourceSource",        NULL},
+};
+
 ACPI_RSDUMP_INFO        AcpiRsDumpPinConfig[11] =
 {
     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinConfig),          "PinConfig",                NULL},
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsinfo.c b/sys/contrib/dev/acpica/source/components/resources/rsinfo.c
index 9687bfb446..f8d51c01fc 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsinfo.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsinfo.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -197,6 +197,7 @@ ACPI_RSCONVERT_INFO         *AcpiGbl_SetResourceDispatch[] =
     AcpiRsConvertPinGroup,          /* 0x16, ACPI_RESOURCE_TYPE_PIN_GROUP */
     AcpiRsConvertPinGroupFunction,  /* 0x17, ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
     AcpiRsConvertPinGroupConfig,    /* 0x18, ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
+    AcpiRsConvertClockInput,        /* 0x19, ACPI_RESOURCE_TYPE_CLOCK_INPUT */
 };
 
 /* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
@@ -243,6 +244,7 @@ ACPI_RSCONVERT_INFO         *AcpiGbl_GetResourceDispatch[] =
     AcpiRsConvertPinGroup,          /* 0x10, ACPI_RESOURCE_NAME_PIN_GROUP */
     AcpiRsConvertPinGroupFunction,  /* 0x11, ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION */
     AcpiRsConvertPinGroupConfig,    /* 0x12, ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG */
+    AcpiRsConvertClockInput,        /* 0x13, ACPI_RESOURCE_NAME_CLOCK_INPUT */
 };
 
 /* Subtype table for SerialBus -- I2C, SPI, UART, and CSI2 */
@@ -288,6 +290,7 @@ ACPI_RSDUMP_INFO            *AcpiGbl_DumpResourceDispatch[] =
     AcpiRsDumpPinGroup,             /* ACPI_RESOURCE_TYPE_PIN_GROUP */
     AcpiRsDumpPinGroupFunction,     /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
     AcpiRsDumpPinGroupConfig,       /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
+    AcpiRsDumpClockInput,           /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */
 };
 
 ACPI_RSDUMP_INFO            *AcpiGbl_DumpSerialBusDispatch[] =
@@ -333,6 +336,7 @@ const UINT8                 AcpiGbl_AmlResourceSizes[] =
     sizeof (AML_RESOURCE_PIN_GROUP),        /* ACPI_RESOURCE_TYPE_PIN_GROUP */
     sizeof (AML_RESOURCE_PIN_GROUP_FUNCTION), /* ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION */
     sizeof (AML_RESOURCE_PIN_GROUP_CONFIG), /* ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG */
+    sizeof (AML_RESOURCE_CLOCK_INPUT),      /* ACPI_RESOURCE_TYPE_CLOCK_INPUT */
 };
 
 
@@ -378,6 +382,7 @@ const UINT8                 AcpiGbl_ResourceStructSizes[] =
     ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP),
     ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_FUNCTION),
     ACPI_RS_SIZE (ACPI_RESOURCE_PIN_GROUP_CONFIG),
+    ACPI_RS_SIZE (ACPI_RESOURCE_CLOCK_INPUT),
 };
 
 const UINT8                 AcpiGbl_AmlResourceSerialBusSizes[] =
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsio.c b/sys/contrib/dev/acpica/source/components/resources/rsio.c
index 4be6a7d16a..cfb078e794 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsio.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsio.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsirq.c b/sys/contrib/dev/acpica/source/components/resources/rsirq.c
index 1a44bdbe9f..ddf9647173 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsirq.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsirq.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rslist.c b/sys/contrib/dev/acpica/source/components/resources/rslist.c
index 1867c0a954..779f9626ea 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rslist.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rslist.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsmemory.c b/sys/contrib/dev/acpica/source/components/resources/rsmemory.c
index e5562a0466..d44dffacb2 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsmemory.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsmemory.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsmisc.c b/sys/contrib/dev/acpica/source/components/resources/rsmisc.c
index f0f186b835..fa256ed494 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsmisc.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsmisc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -349,7 +349,8 @@ AcpiRsConvertAmlToResource (
 
         case ACPI_RSC_COUNT_SERIAL_VEN:
 
-            ItemCount = ACPI_GET16 (Source) - Info->Value;
+            ACPI_MOVE_16_TO_16(&Temp16, Source);
+            ItemCount = Temp16 - Info->Value;
 
             Resource->Length = Resource->Length + ItemCount;
             ACPI_SET16 (Destination, ItemCount);
@@ -357,9 +358,10 @@ AcpiRsConvertAmlToResource (
 
         case ACPI_RSC_COUNT_SERIAL_RES:
 
+            ACPI_MOVE_16_TO_16(&Temp16, Source);
             ItemCount = (AmlResourceLength +
                 sizeof (AML_RESOURCE_LARGE_HEADER)) -
-                ACPI_GET16 (Source) - Info->Value;
+                Temp16 - Info->Value;
 
             Resource->Length = Resource->Length + ItemCount;
             ACPI_SET16 (Destination, ItemCount);
@@ -437,8 +439,9 @@ AcpiRsConvertAmlToResource (
 
             /* Copy the ResourceSource string */
 
+            ACPI_MOVE_16_TO_16 (&Temp16, Source);
             Source = ACPI_ADD_PTR (
-                void, Aml, (ACPI_GET16 (Source) + Info->Value));
+                void, Aml, (Temp16 + Info->Value));
             AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
             break;
 
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsserial.c b/sys/contrib/dev/acpica/source/components/resources/rsserial.c
index d505ea9494..add26305ee 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsserial.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsserial.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -254,6 +254,50 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertGpio[18] =
                         0},
 };
 
+/*******************************************************************************
+ *
+ * AcpiRsConvertClockInput
+ *
+ ******************************************************************************/
+
+ACPI_RSCONVERT_INFO     AcpiRsConvertClockInput[8] =
+{
+    {ACPI_RSC_INITGET,  ACPI_RESOURCE_TYPE_CLOCK_INPUT,
+                        ACPI_RS_SIZE (ACPI_RESOURCE_CLOCK_INPUT),
+                        ACPI_RSC_TABLE_SIZE (AcpiRsConvertClockInput)},
+
+    {ACPI_RSC_INITSET,  ACPI_RESOURCE_NAME_CLOCK_INPUT,
+                        sizeof (AML_RESOURCE_CLOCK_INPUT),
+                        0},
+
+    {ACPI_RSC_MOVE8,    ACPI_RS_OFFSET (Data.ClockInput.RevisionId),
+                        AML_OFFSET (ClockInput.RevisionId),
+                        1},
+
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Mode),
+                        AML_OFFSET (ClockInput.Flags),
+                        0},
+
+    {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.ClockInput.Scale),
+                        AML_OFFSET (ClockInput.Flags),
+                        1},
+
+    {ACPI_RSC_MOVE16,   ACPI_RS_OFFSET (Data.ClockInput.FrequencyDivisor),
+                        AML_OFFSET (ClockInput.FrequencyDivisor),
+                        2},
+
+    {ACPI_RSC_MOVE32,   ACPI_RS_OFFSET (Data.ClockInput.FrequencyNumerator),
+                        AML_OFFSET (ClockInput.FrequencyNumerator),
+                        4},
+
+    /* Resource Source */
+    {ACPI_RSC_SOURCE,    ACPI_RS_OFFSET (Data.ClockInput.ResourceSource),
+                        0,
+                        sizeof(AML_RESOURCE_CLOCK_INPUT)},
+
+};
+
+
 /*******************************************************************************
  *
  * AcpiRsConvertPinfunction
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsutils.c b/sys/contrib/dev/acpica/source/components/resources/rsutils.c
index 6aa2833797..0faac38e91 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsutils.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/resources/rsxface.c b/sys/contrib/dev/acpica/source/components/resources/rsxface.c
index 3f055af4a3..ad9783b7fb 100644
--- a/sys/contrib/dev/acpica/source/components/resources/rsxface.c
+++ b/sys/contrib/dev/acpica/source/components/resources/rsxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbdata.c b/sys/contrib/dev/acpica/source/components/tables/tbdata.c
index 6f3f7113e6..b371f3e259 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbdata.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbdata.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -724,7 +724,7 @@ AcpiTbVerifyTempTable (
     {
         /* Verify the checksum */
 
-        Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length);
+        Status = AcpiUtVerifyChecksum (TableDesc->Pointer, TableDesc->Length);
         if (ACPI_FAILURE (Status))
         {
             ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY,
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbfadt.c b/sys/contrib/dev/acpica/source/components/tables/tbfadt.c
index ff00c2f252..002b69254f 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbfadt.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbfadt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -472,7 +472,7 @@ AcpiTbParseFadt (
      * Validate the FADT checksum before we copy the table. Ignore
      * checksum error as we want to try to get the DSDT and FACS.
      */
-    (void) AcpiTbVerifyChecksum (Table, Length);
+    (void) AcpiUtVerifyChecksum (Table, Length);
 
     /* Create a local copy of the FADT in common ACPI 2.0+ format */
 
@@ -489,24 +489,19 @@ AcpiTbParseFadt (
         ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
         &AcpiGbl_DsdtIndex);
 
-    /* If Hardware Reduced flag is set, there is no FACS */
-
-    if (!AcpiGbl_ReducedHardware)
+    if (AcpiGbl_FADT.Facs)
     {
-        if (AcpiGbl_FADT.Facs)
-        {
-            AcpiTbInstallStandardTable (
-                (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs,
-                ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
-                &AcpiGbl_FacsIndex);
-        }
-        if (AcpiGbl_FADT.XFacs)
-        {
-            AcpiTbInstallStandardTable (
-                (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
-                ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
-                &AcpiGbl_XFacsIndex);
-        }
+        AcpiTbInstallStandardTable (
+            (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs,
+            ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
+            &AcpiGbl_FacsIndex);
+    }
+    if (AcpiGbl_FADT.XFacs)
+    {
+        AcpiTbInstallStandardTable (
+            (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
+            ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
+            &AcpiGbl_XFacsIndex);
     }
 }
 
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbfind.c b/sys/contrib/dev/acpica/source/components/tables/tbfind.c
index 1bc21b3e01..6c88e1eaf8 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbfind.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbfind.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -208,8 +208,8 @@ AcpiTbFindTable (
 
     memset (&Header, 0, sizeof (ACPI_TABLE_HEADER));
     ACPI_COPY_NAMESEG (Header.Signature, Signature);
-    strncpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
-    strncpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
+    memcpy (Header.OemId, OemId, ACPI_OEM_ID_SIZE);
+    memcpy (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE);
 
     /* Search for the table */
 
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbinstal.c b/sys/contrib/dev/acpica/source/components/tables/tbinstal.c
index f628b4605c..bd606170c6 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbinstal.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbinstal.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbprint.c b/sys/contrib/dev/acpica/source/components/tables/tbprint.c
index 5985abdb71..d82cfddb47 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbprint.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbprint.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -152,6 +152,8 @@
 #include "acpi.h"
 #include "accommon.h"
 #include "actables.h"
+#include "acdisasm.h"
+#include "acutils.h"
 
 #define _COMPONENT          ACPI_TABLES
         ACPI_MODULE_NAME    ("tbprint")
@@ -192,7 +194,7 @@ AcpiTbFixString (
 
     while (Length && *String)
     {
-        if (!isprint ((int) *String))
+        if (!isprint ((int) (UINT8) *String))
         {
             *String = '?';
         }
@@ -277,6 +279,14 @@ AcpiTbPrintTableHeader (
             ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision,
             LocalHeader.OemId));
     }
+    else if (AcpiGbl_CDAT && !AcpiUtValidNameseg (Header->Signature))
+    {
+	/* CDAT does not use the common ACPI table header */
+
+        ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X",
+            ACPI_SIG_CDAT, ACPI_FORMAT_UINT64 (Address),
+            ACPI_CAST_PTR (ACPI_TABLE_CDAT, Header)->Length));
+    }
     else
     {
         /* Standard ACPI table with full common header */
@@ -292,90 +302,3 @@ AcpiTbPrintTableHeader (
             LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
     }
 }
-
-
-/*******************************************************************************
- *
- * FUNCTION:    AcpiTbValidateChecksum
- *
- * PARAMETERS:  Table               - ACPI table to verify
- *              Length              - Length of entire table
- *
- * RETURN:      Status
- *
- * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns
- *              exception on bad checksum.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiTbVerifyChecksum (
-    ACPI_TABLE_HEADER       *Table,
-    UINT32                  Length)
-{
-    UINT8                   Checksum;
-
-
-    /*
-     * FACS/S3PT:
-     * They are the odd tables, have no standard ACPI header and no checksum
-     */
-
-    if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) ||
-        ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
-    {
-        return (AE_OK);
-    }
-
-    /* Compute the checksum on the table */
-
-    Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length);
-
-    /* Checksum ok? (should be zero) */
-
-    if (Checksum)
-    {
-        ACPI_BIOS_WARNING ((AE_INFO,
-            "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
-            "should be 0x%2.2X",
-            Table->Signature, Table->Checksum,
-            (UINT8) (Table->Checksum - Checksum)));
-
-#if (ACPI_CHECKSUM_ABORT)
-        return (AE_BAD_CHECKSUM);
-#endif
-    }
-
-    return (AE_OK);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION:    AcpiTbChecksum
- *
- * PARAMETERS:  Buffer          - Pointer to memory region to be checked
- *              Length          - Length of this memory region
- *
- * RETURN:      Checksum (UINT8)
- *
- * DESCRIPTION: Calculates circular checksum of memory region.
- *
- ******************************************************************************/
-
-UINT8
-AcpiTbChecksum (
-    UINT8                   *Buffer,
-    UINT32                  Length)
-{
-    UINT8                   Sum = 0;
-    UINT8                   *End = Buffer + Length;
-
-
-    while (Buffer < End)
-    {
-        Sum = (UINT8) (Sum + *(Buffer++));
-    }
-
-    return (Sum);
-}
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbutils.c b/sys/contrib/dev/acpica/source/components/tables/tbutils.c
index 76d8ef3b09..2aeb296e7a 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbutils.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -165,7 +165,6 @@ AcpiTbGetRootTableEntry (
     UINT32                  TableEntrySize);
 
 
-#if (!ACPI_REDUCED_HARDWARE)
 /*******************************************************************************
  *
  * FUNCTION:    AcpiTbInitializeFacs
@@ -185,15 +184,7 @@ AcpiTbInitializeFacs (
 {
     ACPI_TABLE_FACS         *Facs;
 
-
-    /* If Hardware Reduced flag is set, there is no FACS */
-
-    if (AcpiGbl_ReducedHardware)
-    {
-        AcpiGbl_FACS = NULL;
-        return (AE_OK);
-    }
-    else if (AcpiGbl_FADT.XFacs &&
+    if (AcpiGbl_FADT.XFacs &&
          (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses))
     {
         (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex,
@@ -211,7 +202,6 @@ AcpiTbInitializeFacs (
 
     return (AE_OK);
 }
-#endif /* !ACPI_REDUCED_HARDWARE */
 
 
 /*******************************************************************************
@@ -323,6 +313,7 @@ AcpiTbGetRootTableEntry (
     UINT8                   *TableEntry,
     UINT32                  TableEntrySize)
 {
+    UINT32                  Address32;
     UINT64                  Address64;
 
 
@@ -336,8 +327,8 @@ AcpiTbGetRootTableEntry (
          * 32-bit platform, RSDT: Return 32-bit table entry
          * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return
          */
-        return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (
-            UINT32, TableEntry)));
+        ACPI_MOVE_32_TO_32(&Address32, TableEntry);
+        return Address32;
     }
     else
     {
@@ -471,7 +462,7 @@ AcpiTbParseRootTable (
 
     /* Validate the root table checksum */
 
-    Status = AcpiTbVerifyChecksum (Table, Length);
+    Status = AcpiUtVerifyChecksum (Table, Length);
     if (ACPI_FAILURE (Status))
     {
         AcpiOsUnmapMemory (Table, Length);
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbxface.c b/sys/contrib/dev/acpica/source/components/tables/tbxface.c
index d861d9e6aa..783567cef3 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbxface.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbxfload.c b/sys/contrib/dev/acpica/source/components/tables/tbxfload.c
index 9e90c91bad..8a61d50f66 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbxfload.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbxfload.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/tables/tbxfroot.c b/sys/contrib/dev/acpica/source/components/tables/tbxfroot.c
index ed33c9b67a..63cf27e7b2 100644
--- a/sys/contrib/dev/acpica/source/components/tables/tbxfroot.c
+++ b/sys/contrib/dev/acpica/source/components/tables/tbxfroot.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -227,7 +227,7 @@ AcpiTbValidateRsdp (
 
     /* Check the standard checksum */
 
-    if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)
+    if (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)
     {
         return (AE_BAD_CHECKSUM);
     }
@@ -235,7 +235,7 @@ AcpiTbValidateRsdp (
     /* Check extended checksum if table version >= 2 */
 
     if ((Rsdp->Revision >= 2) &&
-        (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0))
+        (AcpiUtChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0))
     {
         return (AE_BAD_CHECKSUM);
     }
@@ -271,6 +271,7 @@ AcpiFindRootPointer (
     UINT8                   *TablePtr;
     UINT8                   *MemRover;
     UINT32                  PhysicalAddress;
+    UINT32                  EbdaWindowSize;
 
 
     ACPI_FUNCTION_TRACE (AcpiFindRootPointer);
@@ -299,27 +300,40 @@ AcpiFindRootPointer (
 
     /* EBDA present? */
 
-    if (PhysicalAddress > 0x400)
+    /*
+     * Check that the EBDA pointer from memory is sane and does not point
+     * above valid low memory
+     */
+    if (PhysicalAddress > 0x400 &&
+        PhysicalAddress < 0xA0000)
     {
         /*
-         * 1b) Search EBDA paragraphs (EBDA is required to be a
-         *     minimum of 1K length)
+         * Calculate the scan window size
+         * The EBDA is not guaranteed to be larger than a KiB and in case
+         * that it is smaller, the scanning function would leave the low
+         * memory and continue to the VGA range.
+         */
+        EbdaWindowSize = ACPI_MIN(ACPI_EBDA_WINDOW_SIZE,
+            0xA0000 - PhysicalAddress);
+
+        /*
+         * 1b) Search EBDA paragraphs
          */
         TablePtr = AcpiOsMapMemory (
             (ACPI_PHYSICAL_ADDRESS) PhysicalAddress,
-            ACPI_EBDA_WINDOW_SIZE);
+            EbdaWindowSize);
         if (!TablePtr)
         {
             ACPI_ERROR ((AE_INFO,
                 "Could not map memory at 0x%8.8X for length %u",
-                PhysicalAddress, ACPI_EBDA_WINDOW_SIZE));
+                PhysicalAddress, EbdaWindowSize));
 
             return_ACPI_STATUS (AE_NO_MEMORY);
         }
 
         MemRover = AcpiTbScanMemoryForRsdp (
-            TablePtr, ACPI_EBDA_WINDOW_SIZE);
-        AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE);
+            TablePtr, EbdaWindowSize);
+        AcpiOsUnmapMemory (TablePtr, EbdaWindowSize);
 
         if (MemRover)
         {
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utaddress.c b/sys/contrib/dev/acpica/source/components/utilities/utaddress.c
index 92039cfa0f..6d1b9aa481 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utaddress.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utaddress.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utalloc.c b/sys/contrib/dev/acpica/source/components/utilities/utalloc.c
index 276a531917..ae3c6a9364 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utalloc.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utalloc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utascii.c b/sys/contrib/dev/acpica/source/components/utilities/utascii.c
index a375e44d05..05918b1696 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utascii.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utascii.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utbuffer.c b/sys/contrib/dev/acpica/source/components/utilities/utbuffer.c
index 214ff20bfb..b08d260b83 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utbuffer.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utbuffer.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utcache.c b/sys/contrib/dev/acpica/source/components/utilities/utcache.c
index 4e5de96f27..2f80c77f63 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utcache.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utcache.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -433,9 +433,9 @@ AcpiOsAcquireObject (
     {
         /* The cache is empty, create a new object */
 
-        ACPI_MEM_TRACKING (Cache->TotalAllocated++);
-
 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
+	ACPI_MEM_TRACKING (Cache->TotalAllocated++);
+
         if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache->MaxOccupied)
         {
             Cache->MaxOccupied = Cache->TotalAllocated - Cache->TotalFreed;
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utcksum.c b/sys/contrib/dev/acpica/source/components/utilities/utcksum.c
new file mode 100644
index 0000000000..5469075c6b
--- /dev/null
+++ b/sys/contrib/dev/acpica/source/components/utilities/utcksum.c
@@ -0,0 +1,335 @@
+/******************************************************************************
+ *
+ * Module Name: utcksum - Support generating table checksums
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include "acpi.h"
+#include "accommon.h"
+#include "acdisasm.h"
+#include "acutils.h"
+
+
+/* This module used for application-level code only */
+
+#define _COMPONENT          ACPI_CA_DISASSEMBLER
+        ACPI_MODULE_NAME    ("utcksum")
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtVerifyChecksum
+ *
+ * PARAMETERS:  Table               - ACPI table to verify
+ *              Length              - Length of entire table
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns
+ *              exception on bad checksum.
+ *              Note: We don't have to check for a CDAT here, since CDAT is
+ *              not in the RSDT/XSDT, and the CDAT table is never installed
+ *              via ACPICA.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtVerifyChecksum (
+    ACPI_TABLE_HEADER       *Table,
+    UINT32                  Length)
+{
+    UINT8                   Checksum;
+
+
+    /*
+     * FACS/S3PT:
+     * They are the odd tables, have no standard ACPI header and no checksum
+     */
+    if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT) ||
+        ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS))
+    {
+        return (AE_OK);
+    }
+
+    /* Compute the checksum on the table */
+
+    Length = Table->Length;
+    Checksum = AcpiUtGenerateChecksum (ACPI_CAST_PTR (UINT8, Table), Length, Table->Checksum);
+
+    /* Computed checksum matches table? */
+
+    if (Checksum != Table->Checksum)
+    {
+        ACPI_BIOS_WARNING ((AE_INFO,
+            "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
+            "should be 0x%2.2X",
+            Table->Signature, Table->Checksum,
+            Table->Checksum - Checksum));
+
+#if (ACPI_CHECKSUM_ABORT)
+        return (AE_BAD_CHECKSUM);
+#endif
+    }
+
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtVerifyCdatChecksum
+ *
+ * PARAMETERS:  Table               - CDAT ACPI table to verify
+ *              Length              - Length of entire table
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Verifies that the CDAT table checksums to zero. Optionally
+ *              returns an exception on bad checksum.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtVerifyCdatChecksum (
+    ACPI_TABLE_CDAT         *CdatTable,
+    UINT32                  Length)
+{
+    UINT8                   Checksum;
+
+
+    /* Compute the checksum on the table */
+
+    Checksum = AcpiUtGenerateChecksum (ACPI_CAST_PTR (UINT8, CdatTable),
+                    CdatTable->Length, CdatTable->Checksum);
+
+    /* Computed checksum matches table? */
+
+    if (Checksum != CdatTable->Checksum)
+    {
+        ACPI_BIOS_WARNING ((AE_INFO,
+            "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
+            "should be 0x%2.2X",
+            AcpiGbl_CDAT, CdatTable->Checksum, Checksum));
+
+#if (ACPI_CHECKSUM_ABORT)
+        return (AE_BAD_CHECKSUM);
+#endif
+    }
+
+    CdatTable->Checksum = Checksum;
+    return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtGenerateChecksum
+ *
+ * PARAMETERS:  Table               - Pointer to table to be checksummed
+ *              Length              - Length of the table
+ *              OriginalChecksum    - Value of the checksum field
+ *
+ * RETURN:      8 bit checksum of buffer
+ *
+ * DESCRIPTION: Computes an 8 bit checksum of the table.
+ *
+ ******************************************************************************/
+
+UINT8
+AcpiUtGenerateChecksum (
+    void                    *Table,
+    UINT32                  Length,
+    UINT8                   OriginalChecksum)
+{
+    UINT8                   Checksum;
+
+
+    /* Sum the entire table as-is */
+
+    Checksum = AcpiUtChecksum ((UINT8 *) Table, Length);
+
+    /* Subtract off the existing checksum value in the table */
+
+    Checksum = (UINT8) (Checksum - OriginalChecksum);
+
+    /* Compute and return the final checksum */
+
+    Checksum = (UINT8) (0 - Checksum);
+    return (Checksum);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiUtChecksum
+ *
+ * PARAMETERS:  Buffer          - Pointer to memory region to be checked
+ *              Length          - Length of this memory region
+ *
+ * RETURN:      Checksum (UINT8)
+ *
+ * DESCRIPTION: Calculates circular checksum of memory region.
+ *
+ ******************************************************************************/
+
+UINT8
+AcpiUtChecksum (
+    UINT8                   *Buffer,
+    UINT32                  Length)
+{
+    UINT8                   Sum = 0;
+    UINT8                   *End = Buffer + Length;
+
+
+    while (Buffer < End)
+    {
+        Sum = (UINT8) (Sum + *(Buffer++));
+    }
+
+    return (Sum);
+}
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utclib.c b/sys/contrib/dev/acpica/source/components/utilities/utclib.c
index 1c19a11d3a..cf1acf0e5a 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utclib.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utclib.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utcopy.c b/sys/contrib/dev/acpica/source/components/utilities/utcopy.c
index 329416480a..338b9f9c0c 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utcopy.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utcopy.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utdebug.c b/sys/contrib/dev/acpica/source/components/utilities/utdebug.c
index 6d8ab27baa..0c7dd83292 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utdebug.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utdebug.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -185,7 +185,12 @@ AcpiUtInitStackPtrTrace (
     ACPI_SIZE               CurrentSp;
 
 
+#pragma GCC diagnostic push
+#if defined(__GNUC__) && __GNUC__ >= 12
+#pragma GCC diagnostic ignored "-Wdangling-pointer="
+#endif
     AcpiGbl_EntryStackPointer = &CurrentSp;
+#pragma GCC diagnostic pop
 }
 
 
@@ -210,7 +215,12 @@ AcpiUtTrackStackPtr (
 
     if (&CurrentSp < AcpiGbl_LowestStackPointer)
     {
+#pragma GCC diagnostic push
+#if defined(__GNUC__) && __GNUC__ >= 12
+#pragma GCC diagnostic ignored "-Wdangling-pointer="
+#endif
         AcpiGbl_LowestStackPointer = &CurrentSp;
+#pragma GCC diagnostic pop
     }
 
     if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting)
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utdecode.c b/sys/contrib/dev/acpica/source/components/utilities/utdecode.c
index 11818b4f8c..4f26e3aa31 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utdecode.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utdecode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utdelete.c b/sys/contrib/dev/acpica/source/components/utilities/utdelete.c
index de114cb69d..868ad0e580 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utdelete.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utdelete.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -293,7 +293,7 @@ AcpiUtDeleteInternalObj (
             /* Global Lock has extra semaphore */
 
             (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore);
-            AcpiGbl_GlobalLockSemaphore = NULL;
+            AcpiGbl_GlobalLockSemaphore = ACPI_SEMAPHORE_NULL;
 
             AcpiOsDeleteMutex (Object->Mutex.OsMutex);
             AcpiGbl_GlobalLockMutex = NULL;
@@ -312,7 +312,7 @@ AcpiUtDeleteInternalObj (
             Object, Object->Event.OsSemaphore));
 
         (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore);
-        Object->Event.OsSemaphore = NULL;
+        Object->Event.OsSemaphore = ACPI_SEMAPHORE_NULL;
         break;
 
     case ACPI_TYPE_METHOD:
@@ -574,7 +574,7 @@ AcpiUtUpdateRefCount (
             "Obj %p Type %.2X [%s] Refs %.2X [Incremented]\n",
             Object, Object->Common.Type,
             AcpiUtGetObjectTypeName (Object), NewCount));
-        Message = "Incremement";
+        Message = "Increment";
         break;
 
     case REF_DECREMENT:
diff --git a/sys/contrib/dev/acpica/source/components/utilities/uterror.c b/sys/contrib/dev/acpica/source/components/utilities/uterror.c
index 51ce8d5909..6502794cf5 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/uterror.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/uterror.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/uteval.c b/sys/contrib/dev/acpica/source/components/utilities/uteval.c
index 9e30ee8d9e..d33d73655a 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/uteval.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/uteval.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utexcep.c b/sys/contrib/dev/acpica/source/components/utilities/utexcep.c
index 4e7e3f5544..aa0ff78d49 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utexcep.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utexcep.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utglobal.c b/sys/contrib/dev/acpica/source/components/utilities/utglobal.c
index 65189ff2de..2b953ddac1 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utglobal.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utglobal.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/uthex.c b/sys/contrib/dev/acpica/source/components/utilities/uthex.c
index 5cbc8fa6d6..7343b99c42 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/uthex.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/uthex.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utids.c b/sys/contrib/dev/acpica/source/components/utilities/utids.c
index 4ef4fccaac..9d9b075847 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utids.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utids.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utinit.c b/sys/contrib/dev/acpica/source/components/utilities/utinit.c
index 27f1e37b83..2299f58dd1 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utinit.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utinit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -316,7 +316,7 @@ AcpiUtInitGlobals (
 
     /* Global Lock support */
 
-    AcpiGbl_GlobalLockSemaphore         = NULL;
+    AcpiGbl_GlobalLockSemaphore         = ACPI_SEMAPHORE_NULL;
     AcpiGbl_GlobalLockMutex             = NULL;
     AcpiGbl_GlobalLockAcquired          = FALSE;
     AcpiGbl_GlobalLockHandle            = 0;
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utlock.c b/sys/contrib/dev/acpica/source/components/utilities/utlock.c
index a1501189d0..c7ee5a575b 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utlock.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utlock.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utmath.c b/sys/contrib/dev/acpica/source/components/utilities/utmath.c
index 2580cb6e93..a3692d725b 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utmath.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utmath.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utmisc.c b/sys/contrib/dev/acpica/source/components/utilities/utmisc.c
index f2db74e8f3..7c0f981020 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utmisc.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utmisc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utmutex.c b/sys/contrib/dev/acpica/source/components/utilities/utmutex.c
index b723f5b27d..bc1a43afc0 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utmutex.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utmutex.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utnonansi.c b/sys/contrib/dev/acpica/source/components/utilities/utnonansi.c
index cf3763bc1d..76fa07f6df 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utnonansi.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utnonansi.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utobject.c b/sys/contrib/dev/acpica/source/components/utilities/utobject.c
index 8b3dcd5f21..30b2fd99c9 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utobject.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utobject.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utosi.c b/sys/contrib/dev/acpica/source/components/utilities/utosi.c
index 756ca35c35..8edd783ccf 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utosi.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utosi.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -221,6 +221,8 @@ static ACPI_INTERFACE_INFO    AcpiDefaultSupportedInterfaces[] =
     {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 version 1809 - Added 11/2018 */
     {"Windows 2019",        NULL, 0, ACPI_OSI_WIN_10_19H1},      /* Windows 10 version 1903 - Added 08/2019 */
     {"Windows 2020",        NULL, 0, ACPI_OSI_WIN_10_20H1},      /* Windows 10 version 2004 - Added 08/2021 */
+    {"Windows 2021",        NULL, 0, ACPI_OSI_WIN_11},           /* Windows 11 - Added 01/2022 */
+    {"Windows 2022",        NULL, 0, ACPI_OSI_WIN_11_22H2},      /* Windows 11 version 22H2 - Added 04/2024 */
 
     /* Feature Group Strings */
 
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utownerid.c b/sys/contrib/dev/acpica/source/components/utilities/utownerid.c
index 2bea3e5788..31c6db05a4 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utownerid.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utownerid.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utpredef.c b/sys/contrib/dev/acpica/source/components/utilities/utpredef.c
index c9a830c2c5..1bda772a06 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utpredef.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utpredef.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utprint.c b/sys/contrib/dev/acpica/source/components/utilities/utprint.c
index 96a9ea5d7c..3d26ab54a1 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utprint.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utprint.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2023, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -561,12 +561,8 @@ vsnprintf (
 
     Pos = String;
 
-
-    if (Size != ACPI_UINT32_MAX) {
-        End = String + Size;
-    } else {
-        End = ACPI_CAST_PTR(char, ACPI_UINT32_MAX);
-    }
+    Size = ACPI_MIN(Size, ACPI_PTR_DIFF(ACPI_MAX_PTR, String));
+    End = String + Size;
 
     for (; *Format; ++Format)
     {
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utresdecode.c b/sys/contrib/dev/acpica/source/components/utilities/utresdecode.c
index 561240f067..070552fc4c 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utresdecode.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utresdecode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -467,4 +467,17 @@ const char                      *AcpiGbl_PtypDecode[] =
     "Input Schmitt Trigger",
 };
 
+const char                      *AcpiGbl_ClockInputMode[] =
+{
+    "Fixed",
+    "Variable",
+};
+
+const char                      *AcpiGbl_ClockInputScale[] =
+{
+    "Hz",
+    "KHz",
+    "MHz",
+};
+
 #endif
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utresrc.c b/sys/contrib/dev/acpica/source/components/utilities/utresrc.c
index 0ed322277c..8f2913b3b4 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utresrc.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utresrc.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -204,6 +204,8 @@ const UINT8                 AcpiGbl_ResourceAmlSizes[] =
     ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP),
     ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP_FUNCTION),
     ACPI_AML_SIZE_LARGE (AML_RESOURCE_PIN_GROUP_CONFIG),
+    ACPI_AML_SIZE_LARGE (AML_RESOURCE_CLOCK_INPUT),
+
 };
 
 const UINT8                 AcpiGbl_ResourceAmlSerialBusSizes[] =
@@ -264,6 +266,7 @@ static const UINT8          AcpiGbl_ResourceTypes[] =
     ACPI_VARIABLE_LENGTH,           /* 10 PinGroup */
     ACPI_VARIABLE_LENGTH,           /* 11 PinGroupFunction */
     ACPI_VARIABLE_LENGTH,           /* 12 PinGroupConfig */
+    ACPI_VARIABLE_LENGTH,           /* 13 ClockInput */
 };
 
 
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utstate.c b/sys/contrib/dev/acpica/source/components/utilities/utstate.c
index ac85c00203..1dbecba74d 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utstate.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utstate.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utstring.c b/sys/contrib/dev/acpica/source/components/utilities/utstring.c
index 5218ebab20..19ddd2581e 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utstring.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utstring.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -308,7 +308,7 @@ AcpiUtRepairName (
         return;
     }
 
-    ACPI_COPY_NAMESEG (&OriginalName, Name);
+    ACPI_COPY_NAMESEG (&OriginalName, &Name[0]);
 
     /* Check each character in the name */
 
@@ -321,10 +321,10 @@ AcpiUtRepairName (
 
         /*
          * Replace a bad character with something printable, yet technically
-         * still invalid. This prevents any collisions with existing "good"
+         * "odd". This prevents any collisions with existing "good"
          * names in the namespace.
          */
-        Name[i] = '*';
+        Name[i] = '_';
         FoundBadChar = TRUE;
     }
 
@@ -335,8 +335,8 @@ AcpiUtRepairName (
         if (!AcpiGbl_EnableInterpreterSlack)
         {
             ACPI_WARNING ((AE_INFO,
-                "Invalid character(s) in name (0x%.8X), repaired: [%4.4s]",
-                OriginalName, Name));
+                "Invalid character(s) in name (0x%.8X) %p, repaired: [%4.4s]",
+                OriginalName, Name, &Name[0]));
         }
         else
         {
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utstrsuppt.c b/sys/contrib/dev/acpica/source/components/utilities/utstrsuppt.c
index f2a02eabb2..0c96520d4b 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utstrsuppt.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utstrsuppt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utstrtoul64.c b/sys/contrib/dev/acpica/source/components/utilities/utstrtoul64.c
index 6a121c7302..8b927db677 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utstrtoul64.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utstrtoul64.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/uttrack.c b/sys/contrib/dev/acpica/source/components/utilities/uttrack.c
index b7928b155c..fa5c49fbcf 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/uttrack.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/uttrack.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utuuid.c b/sys/contrib/dev/acpica/source/components/utilities/utuuid.c
index fffc71f421..f6889ddc30 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utuuid.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utuuid.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utxface.c b/sys/contrib/dev/acpica/source/components/utilities/utxface.c
index 227d18cae9..5e10fc23c5 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utxface.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utxface.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utxferror.c b/sys/contrib/dev/acpica/source/components/utilities/utxferror.c
index 0c6b1c7696..43e940f636 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utxferror.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utxferror.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utxfinit.c b/sys/contrib/dev/acpica/source/components/utilities/utxfinit.c
index 15756cb766..8c6da2fba7 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utxfinit.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utxfinit.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -276,6 +276,20 @@ AcpiEnableSubsystem (
      */
     AcpiGbl_EarlyInitialization = FALSE;
 
+    /*
+     * Obtain a permanent mapping for the FACS. This is required for the
+     * Global Lock and the Firmware Waking Vector
+     */
+    if (!(Flags & ACPI_NO_FACS_INIT))
+    {
+        Status = AcpiTbInitializeFacs ();
+        if (ACPI_FAILURE (Status))
+        {
+            ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
+            return_ACPI_STATUS (Status);
+        }
+    }
+
 #if (!ACPI_REDUCED_HARDWARE)
 
     /* Enable ACPI mode */
@@ -294,20 +308,6 @@ AcpiEnableSubsystem (
         }
     }
 
-    /*
-     * Obtain a permanent mapping for the FACS. This is required for the
-     * Global Lock and the Firmware Waking Vector
-     */
-    if (!(Flags & ACPI_NO_FACS_INIT))
-    {
-        Status = AcpiTbInitializeFacs ();
-        if (ACPI_FAILURE (Status))
-        {
-            ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
-            return_ACPI_STATUS (Status);
-        }
-    }
-
     /*
      * Initialize ACPI Event handling (Fixed and General Purpose)
      *
diff --git a/sys/contrib/dev/acpica/source/components/utilities/utxfmutex.c b/sys/contrib/dev/acpica/source/components/utilities/utxfmutex.c
index 68472b7fb3..b82a4a9549 100644
--- a/sys/contrib/dev/acpica/source/components/utilities/utxfmutex.c
+++ b/sys/contrib/dev/acpica/source/components/utilities/utxfmutex.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acapps.h b/sys/contrib/dev/acpica/source/include/acapps.h
index 3f1833c5f9..ccaea124af 100644
--- a/sys/contrib/dev/acpica/source/include/acapps.h
+++ b/sys/contrib/dev/acpica/source/include/acapps.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -159,7 +159,7 @@
 /* Common info for tool signons */
 
 #define ACPICA_NAME                 "Intel ACPI Component Architecture"
-#define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2021 Intel Corporation"
+#define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2025 Intel Corporation"
 
 #if ACPI_MACHINE_WIDTH == 64
 #define ACPI_WIDTH          " (64-bit version)"
diff --git a/sys/contrib/dev/acpica/source/include/acbuffer.h b/sys/contrib/dev/acpica/source/include/acbuffer.h
index 1576afa6ff..682ddcd726 100644
--- a/sys/contrib/dev/acpica/source/include/acbuffer.h
+++ b/sys/contrib/dev/acpica/source/include/acbuffer.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acclib.h b/sys/contrib/dev/acpica/source/include/acclib.h
index c91b1edf1a..3960ffd258 100644
--- a/sys/contrib/dev/acpica/source/include/acclib.h
+++ b/sys/contrib/dev/acpica/source/include/acclib.h
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/accommon.h b/sys/contrib/dev/acpica/source/include/accommon.h
index 4ef3f5bc16..7da7cf7574 100644
--- a/sys/contrib/dev/acpica/source/include/accommon.h
+++ b/sys/contrib/dev/acpica/source/include/accommon.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acconfig.h b/sys/contrib/dev/acpica/source/include/acconfig.h
index a580852698..983dc30211 100644
--- a/sys/contrib/dev/acpica/source/include/acconfig.h
+++ b/sys/contrib/dev/acpica/source/include/acconfig.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -210,7 +210,6 @@
  *      General Purpose Events (GPEs)
  *      Global Lock
  *      ACPI PM timer
- *      FACS table (Waking vectors and Global Lock)
  */
 #ifndef ACPI_REDUCED_HARDWARE
 #define ACPI_REDUCED_HARDWARE           FALSE
@@ -335,6 +334,8 @@
 
 #define ACPI_PRM_INPUT_BUFFER_SIZE      26
 
+#define ACPI_FFH_INPUT_BUFFER_SIZE      256
+
 /* _SxD and _SxW control methods */
 
 #define ACPI_NUM_SxD_METHODS            4
diff --git a/sys/contrib/dev/acpica/source/include/acconvert.h b/sys/contrib/dev/acpica/source/include/acconvert.h
index b654b18b4d..9dedc51a7e 100644
--- a/sys/contrib/dev/acpica/source/include/acconvert.h
+++ b/sys/contrib/dev/acpica/source/include/acconvert.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acdebug.h b/sys/contrib/dev/acpica/source/include/acdebug.h
index 434745d145..05225eeffe 100644
--- a/sys/contrib/dev/acpica/source/include/acdebug.h
+++ b/sys/contrib/dev/acpica/source/include/acdebug.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -619,4 +619,8 @@ AcpiDbUint32ToHexString (
     UINT32                  Value,
     char                    *Buffer);
 
+void
+AcpiDbGenerateInterrupt (
+    char                    *GsivArg);
+
 #endif  /* __ACDEBUG_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/acdisasm.h b/sys/contrib/dev/acpica/source/include/acdisasm.h
index 17d70d4e79..9e8d497622 100644
--- a/sys/contrib/dev/acpica/source/include/acdisasm.h
+++ b/sys/contrib/dev/acpica/source/include/acdisasm.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -206,6 +206,7 @@ typedef enum
     ACPI_DMT_FLAGS0,
     ACPI_DMT_FLAGS1,
     ACPI_DMT_FLAGS2,
+    ACPI_DMT_FLAGS8_2,
     ACPI_DMT_FLAGS4,
     ACPI_DMT_FLAGS4_0,
     ACPI_DMT_FLAGS4_4,
@@ -222,9 +223,14 @@ typedef enum
     ACPI_DMT_UINT64,
     ACPI_DMT_BUF7,
     ACPI_DMT_BUF10,
+    ACPI_DMT_BUF11,
     ACPI_DMT_BUF12,
     ACPI_DMT_BUF16,
     ACPI_DMT_BUF18,
+    ACPI_DMT_BUF24,
+    ACPI_DMT_BUF26,
+    ACPI_DMT_BUF32,
+    ACPI_DMT_BUF112,
     ACPI_DMT_BUF128,
     ACPI_DMT_SIG,
     ACPI_DMT_STRING,
@@ -259,11 +265,14 @@ typedef enum
     ACPI_DMT_AEST_XRUPT,
     ACPI_DMT_AGDI,
     ACPI_DMT_ASF,
+    ACPI_DMT_ASPT,
+    ACPI_DMT_CDAT,
     ACPI_DMT_CEDT,
     ACPI_DMT_DMAR,
     ACPI_DMT_DMAR_SCOPE,
     ACPI_DMT_EINJACT,
     ACPI_DMT_EINJINST,
+    ACPI_DMT_ERDT,
     ACPI_DMT_ERSTACT,
     ACPI_DMT_ERSTINST,
     ACPI_DMT_FADTPM,
@@ -278,20 +287,16 @@ typedef enum
     ACPI_DMT_IVRS_UNTERMINATED_STRING,
     ACPI_DMT_LPIT,
     ACPI_DMT_MADT,
+    ACPI_DMT_MPAM_LOCATOR,
     ACPI_DMT_NFIT,
-    ACPI_DMT_NHLT1,
-    ACPI_DMT_NHLT1a,
-    ACPI_DMT_NHLT1b,
-    ACPI_DMT_NHLT1c,
-    ACPI_DMT_NHLT1d,
-    ACPI_DMT_NHLT1e,
-    ACPI_DMT_NHLT1f,
     ACPI_DMT_PCCT,
     ACPI_DMT_PHAT,
     ACPI_DMT_PMTT,
     ACPI_DMT_PMTT_VENDOR,
     ACPI_DMT_PPTT,
     ACPI_DMT_RGRT,
+    ACPI_DMT_RHCT,
+    ACPI_DMT_RIMT,
     ACPI_DMT_SDEI,
     ACPI_DMT_SDEV,
     ACPI_DMT_SLIC,
@@ -384,10 +389,19 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestGenRsrc[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestMemError[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestSmmuError[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestVendorError[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestVendorV2Error[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestGicError[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestPCIeError[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestProxyError[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXface[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXfaceHeader[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXface4k[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXface16k[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXface64k[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXrupt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAestXruptV2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAgdi[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoApmtNode[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
@@ -396,12 +410,31 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAspt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsptHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAspt0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAspt1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAspt2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBdat[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCcel[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatTableHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatHeader[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat3[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat4[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdat5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCdatEntries[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedtHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt1_te[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCedt2_te[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
@@ -423,6 +456,8 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar6[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0a[];
@@ -432,6 +467,24 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCacd[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCacdX2apic[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCarc[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCard[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCmrc[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtCmrd[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtDacd[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtDacdPath[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtDacdScope[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtIbad[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtIbrd[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtIbrdCorrFactor[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtMarc[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtMmrc[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtMmrcCorrFactor[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErdtRmdd[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
@@ -524,21 +577,50 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11a[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11b[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt15[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt15a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt16[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt17[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt18[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt19[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt20[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt21[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt22[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt23[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt24[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt25[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt26[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt27[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt128[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1A[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1B[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1C[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1D[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1E[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1F[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1G[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam1Deps[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpam2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMrrm[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMrrm0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit[];
@@ -554,25 +636,6 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit5[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit7[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt0[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt1[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt2[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt3[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt3a[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt4[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5a[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5b[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5c[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt6[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt6a[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt6b[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt7[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt7a[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt7b[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt8[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt9[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhatHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhat0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhat0a[];
@@ -605,8 +668,26 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPrmtHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPrmtModule[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPrmtHandler[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRasf[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRas2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRas2PccDesc[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRgrt[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRgrt0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhct[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctNodeHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctIsa1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctIsaPad[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctCmo1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctMmu1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctHartInfo1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRhctHartInfo2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtNodeHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtIommu[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtIommuWire[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtPcieRc[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtIdMapping[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtPlatDev[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRimtPlatDevPad[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
@@ -639,6 +720,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat4[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat5[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat6[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat7[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSvkl[];
@@ -734,10 +816,26 @@ void
 AcpiDmDumpAest (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpApmt (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpAsf (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpAspt (
+    ACPI_TABLE_HEADER       *Table);
+
+void
+AcpiDmDumpCcel (
+    ACPI_TABLE_HEADER       *Table);
+
+void
+AcpiDmDumpCdat (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpCedt (
     ACPI_TABLE_HEADER       *Table);
@@ -766,6 +864,10 @@ void
 AcpiDmDumpEinj (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpErdt (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpErst (
     ACPI_TABLE_HEADER       *Table);
@@ -810,20 +912,24 @@ void
 AcpiDmDumpMcfg (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpMpam (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpMpst (
     ACPI_TABLE_HEADER       *Table);
 
 void
-AcpiDmDumpMsct (
+AcpiDmDumpMrrm (
     ACPI_TABLE_HEADER       *Table);
 
 void
-AcpiDmDumpNfit (
+AcpiDmDumpMsct (
     ACPI_TABLE_HEADER       *Table);
 
 void
-AcpiDmDumpNhlt (
+AcpiDmDumpNfit (
     ACPI_TABLE_HEADER       *Table);
 
 void
@@ -850,10 +956,22 @@ void
 AcpiDmDumpPrmt (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpRas2 (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpRgrt (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpRhct (
+    ACPI_TABLE_HEADER       *Table);
+
+void
+AcpiDmDumpRimt (
+    ACPI_TABLE_HEADER       *Table);
+
 UINT32
 AcpiDmDumpRsdp (
     ACPI_TABLE_HEADER       *Table);
@@ -1295,6 +1413,12 @@ AcpiDmVendorCommon (
     UINT32                  Length,
     UINT32                  Level);
 
+void
+AcpiDmClockInputDescriptor (
+    ACPI_OP_WALK_INFO       *Info,
+    AML_RESOURCE            *Resource,
+    UINT32                  Length,
+    UINT32                  Level);
 
 /*
  * dmresrcs
diff --git a/sys/contrib/dev/acpica/source/include/acdispat.h b/sys/contrib/dev/acpica/source/include/acdispat.h
index 2047779ff4..0573e5817d 100644
--- a/sys/contrib/dev/acpica/source/include/acdispat.h
+++ b/sys/contrib/dev/acpica/source/include/acdispat.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acevents.h b/sys/contrib/dev/acpica/source/include/acevents.h
index dda1449557..22eff36055 100644
--- a/sys/contrib/dev/acpica/source/include/acevents.h
+++ b/sys/contrib/dev/acpica/source/include/acevents.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acexcep.h b/sys/contrib/dev/acpica/source/include/acexcep.h
index 6312602e92..7216e0d491 100644
--- a/sys/contrib/dev/acpica/source/include/acexcep.h
+++ b/sys/contrib/dev/acpica/source/include/acexcep.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -322,8 +322,11 @@ typedef struct acpi_exception_info
 #define AE_AML_TARGET_TYPE              EXCEP_AML (0x0023)
 #define AE_AML_PROTOCOL                 EXCEP_AML (0x0024)
 #define AE_AML_BUFFER_LENGTH            EXCEP_AML (0x0025)
+#define AE_AML_TOO_FEW_ARGUMENTS        EXCEP_AML (0x0026)
+#define AE_AML_TOO_MANY_ARGUMENTS       EXCEP_AML (0x0027)
 
-#define AE_CODE_AML_MAX                 0x0025
+
+#define AE_CODE_AML_MAX                 0x0027
 
 
 /*
@@ -456,7 +459,9 @@ static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Aml[] =
     EXCEP_TXT ("AE_AML_UNINITIALIZED_NODE",     "A namespace node is uninitialized or unresolved"),
     EXCEP_TXT ("AE_AML_TARGET_TYPE",            "A target operand of an incorrect type was encountered"),
     EXCEP_TXT ("AE_AML_PROTOCOL",               "Violation of a fixed ACPI protocol"),
-    EXCEP_TXT ("AE_AML_BUFFER_LENGTH",          "The length of the buffer is invalid/incorrect")
+    EXCEP_TXT ("AE_AML_BUFFER_LENGTH",          "The length of the buffer is invalid/incorrect"),
+    EXCEP_TXT ("AE_AML_TOO_FEW_ARGUMENTS",      "There are fewer than expected method arguments"),
+    EXCEP_TXT ("AE_AML_TOO_MANY_ARGUMENTS",     "There are too many arguments for this method")
 };
 
 static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Ctrl[] =
diff --git a/sys/contrib/dev/acpica/source/include/acglobal.h b/sys/contrib/dev/acpica/source/include/acglobal.h
index 06092c8f0c..cc960cfb2d 100644
--- a/sys/contrib/dev/acpica/source/include/acglobal.h
+++ b/sys/contrib/dev/acpica/source/include/acglobal.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -167,15 +167,12 @@ ACPI_GLOBAL (ACPI_TABLE_LIST,           AcpiGbl_RootTableList);
 
 ACPI_GLOBAL (ACPI_TABLE_HEADER *,       AcpiGbl_DSDT);
 ACPI_GLOBAL (ACPI_TABLE_HEADER,         AcpiGbl_OriginalDsdtHeader);
+ACPI_INIT_GLOBAL (char *,               AcpiGbl_CDAT, NULL);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_INDEX);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX);
 ACPI_INIT_GLOBAL (UINT32,               AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX);
-
-#if (!ACPI_REDUCED_HARDWARE)
-ACPI_GLOBAL (ACPI_TABLE_FACS *,         AcpiGbl_FACS);
-
-#endif /* !ACPI_REDUCED_HARDWARE */
+ACPI_INIT_GLOBAL (ACPI_TABLE_FACS *,    AcpiGbl_FACS, NULL);
 
 /* These addresses are calculated from the FADT Event Block addresses */
 
@@ -267,6 +264,7 @@ ACPI_GLOBAL (ACPI_TABLE_HANDLER,        AcpiGbl_TableHandler);
 ACPI_GLOBAL (void *,                    AcpiGbl_TableHandlerContext);
 ACPI_GLOBAL (ACPI_INTERFACE_HANDLER,    AcpiGbl_InterfaceHandler);
 ACPI_GLOBAL (ACPI_SCI_HANDLER_INFO *,   AcpiGbl_SciHandlerList);
+ACPI_GLOBAL (ACPI_GED_HANDLER_INFO *,   AcpiGbl_GedHandlerList);
 
 /* Owner ID support */
 
diff --git a/sys/contrib/dev/acpica/source/include/achware.h b/sys/contrib/dev/acpica/source/include/achware.h
index 994e9767a2..46efffb507 100644
--- a/sys/contrib/dev/acpica/source/include/achware.h
+++ b/sys/contrib/dev/acpica/source/include/achware.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acinterp.h b/sys/contrib/dev/acpica/source/include/acinterp.h
index c6e27cc21e..b7f9e8f615 100644
--- a/sys/contrib/dev/acpica/source/include/acinterp.h
+++ b/sys/contrib/dev/acpica/source/include/acinterp.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -280,6 +280,10 @@ AcpiExTracePoint (
     UINT8                   *Aml,
     char                    *Pathname);
 
+void
+AcpiExTraceArgs(
+    ACPI_OPERAND_OBJECT     **Params,
+    UINT32                  Count);
 
 /*
  * exfield - ACPI AML (p-code) execution - field manipulation
diff --git a/sys/contrib/dev/acpica/source/include/aclocal.h b/sys/contrib/dev/acpica/source/include/aclocal.h
index e20b642e51..711049c73a 100644
--- a/sys/contrib/dev/acpica/source/include/aclocal.h
+++ b/sys/contrib/dev/acpica/source/include/aclocal.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -480,7 +480,7 @@ ACPI_STATUS (*ACPI_INTERNAL_METHOD) (
  */
 typedef struct acpi_name_info
 {
-    char                        Name[ACPI_NAMESEG_SIZE];
+    char                        Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     UINT16                      ArgumentList;
     UINT8                       ExpectedBtypes;
 
@@ -568,7 +568,7 @@ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) (
 
 typedef struct acpi_simple_repair_info
 {
-    char                        Name[ACPI_NAMESEG_SIZE];
+    char                        Name[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     UINT32                      UnexpectedBtypes;
     UINT32                      PackageIndex;
     ACPI_OBJECT_CONVERTER       ObjectConverter;
@@ -767,6 +767,15 @@ typedef struct acpi_field_info
 
 } ACPI_FIELD_INFO;
 
+/* Information about the interrupt ID and _EVT of a GED device */
+
+typedef struct acpi_ged_handler_info
+{
+    struct acpi_ged_handler_info    *Next;
+    UINT32                          IntId;      /* The interrupt ID that triggers the execution of the EvtMethod. */
+    ACPI_NAMESPACE_NODE             *EvtMethod; /* The _EVT method to be executed when an interrupt with ID = IntID is received */
+
+} ACPI_GED_HANDLER_INFO;
 
 /*****************************************************************************
  *
@@ -786,13 +795,13 @@ typedef struct acpi_field_info
     UINT8                           DescriptorType; /* To differentiate various internal objs */\
     UINT8                           Flags; \
     UINT16                          Value; \
-    UINT16                          State;
+    UINT16                          State
 
     /* There are 2 bytes available here until the next natural alignment boundary */
 
 typedef struct acpi_common_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
 } ACPI_COMMON_STATE;
 
 
@@ -801,7 +810,7 @@ typedef struct acpi_common_state
  */
 typedef struct acpi_update_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     union acpi_operand_object       *Object;
 
 } ACPI_UPDATE_STATE;
@@ -812,7 +821,7 @@ typedef struct acpi_update_state
  */
 typedef struct acpi_pkg_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     UINT32                          Index;
     union acpi_operand_object       *SourceObject;
     union acpi_operand_object       *DestObject;
@@ -829,7 +838,7 @@ typedef struct acpi_pkg_state
  */
 typedef struct acpi_control_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     UINT16                          Opcode;
     union acpi_parse_object         *PredicateOp;
     UINT8                           *AmlPredicateStart;     /* Start of if/while predicate */
@@ -844,7 +853,7 @@ typedef struct acpi_control_state
  */
 typedef struct acpi_scope_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     ACPI_NAMESPACE_NODE             *Node;
 
 } ACPI_SCOPE_STATE;
@@ -852,7 +861,7 @@ typedef struct acpi_scope_state
 
 typedef struct acpi_pscope_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     UINT32                          ArgCount;               /* Number of fixed arguments */
     union acpi_parse_object         *Op;                    /* Current op being parsed */
     UINT8                           *ArgEnd;                /* Current argument end */
@@ -868,7 +877,7 @@ typedef struct acpi_pscope_state
  */
 typedef struct acpi_thread_state
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     UINT8                           CurrentSyncLevel;       /* Mutex Sync (nested acquire) level */
     struct acpi_walk_state          *WalkStateList;         /* Head of list of WalkStates for this thread */
     union acpi_operand_object       *AcquiredMutexList;     /* List of all currently acquired mutexes */
@@ -883,7 +892,7 @@ typedef struct acpi_thread_state
  */
 typedef struct acpi_result_values
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     union acpi_operand_object       *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM];
 
 } ACPI_RESULT_VALUES;
@@ -914,7 +923,7 @@ typedef struct acpi_global_notify_handler
  */
 typedef struct acpi_notify_info
 {
-    ACPI_STATE_COMMON
+    ACPI_STATE_COMMON;
     UINT8                           HandlerListId;
     ACPI_NAMESPACE_NODE             *Node;
     union acpi_operand_object       *HandlerListHead;
@@ -1404,6 +1413,8 @@ typedef struct acpi_port_info
 #define ACPI_ADDRESS_TYPE_IO_RANGE              1
 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
 
+#define ACPI_ADDRESS_TYPE_PCC_NUMBER            0xA
+
 /* Resource descriptor types and masks */
 
 #define ACPI_RESOURCE_NAME_LARGE                0x80
@@ -1453,7 +1464,8 @@ typedef struct acpi_port_info
 #define ACPI_RESOURCE_NAME_PIN_GROUP            0x90
 #define ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION   0x91
 #define ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG     0x92
-#define ACPI_RESOURCE_NAME_LARGE_MAX            0x92
+#define ACPI_RESOURCE_NAME_CLOCK_INPUT          0x93
+#define ACPI_RESOURCE_NAME_LARGE_MAX            0x94
 
 
 /*****************************************************************************
diff --git a/sys/contrib/dev/acpica/source/include/acmacros.h b/sys/contrib/dev/acpica/source/include/acmacros.h
index a7a79fc80e..eabe403b39 100644
--- a/sys/contrib/dev/acpica/source/include/acmacros.h
+++ b/sys/contrib/dev/acpica/source/include/acmacros.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acnames.h b/sys/contrib/dev/acpica/source/include/acnames.h
index 9075ca7401..070e318fb8 100644
--- a/sys/contrib/dev/acpica/source/include/acnames.h
+++ b/sys/contrib/dev/acpica/source/include/acnames.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -164,6 +164,7 @@
 #define METHOD_NAME__DDN        "_DDN"
 #define METHOD_NAME__DIS        "_DIS"
 #define METHOD_NAME__DMA        "_DMA"
+#define METHOD_NAME__EVT        "_EVT"
 #define METHOD_NAME__HID        "_HID"
 #define METHOD_NAME__INI        "_INI"
 #define METHOD_NAME__PLD        "_PLD"
diff --git a/sys/contrib/dev/acpica/source/include/acnamesp.h b/sys/contrib/dev/acpica/source/include/acnamesp.h
index 2edd99d79e..41f704b3d7 100644
--- a/sys/contrib/dev/acpica/source/include/acnamesp.h
+++ b/sys/contrib/dev/acpica/source/include/acnamesp.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acobject.h b/sys/contrib/dev/acpica/source/include/acobject.h
index 51a397f2fa..95be1a95b4 100644
--- a/sys/contrib/dev/acpica/source/include/acobject.h
+++ b/sys/contrib/dev/acpica/source/include/acobject.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -191,7 +191,7 @@
     UINT8                           DescriptorType;     /* To differentiate various internal objs */\
     UINT8                           Type;               /* ACPI_OBJECT_TYPE */\
     UINT16                          ReferenceCount;     /* For object deletion management */\
-    UINT8                           Flags;
+    UINT8                           Flags
     /*
      * Note: There are 3 bytes available here before the
      * next natural alignment boundary (for both 32/64 cases)
@@ -216,14 +216,14 @@
 
 typedef struct acpi_object_common
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
 
 } ACPI_OBJECT_COMMON;
 
 
 typedef struct acpi_object_integer
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           Fill[3];            /* Prevent warning on some compilers */
     UINT64                          Value;
 
@@ -238,23 +238,23 @@ typedef struct acpi_object_integer
  */
 #define ACPI_COMMON_BUFFER_INFO(_Type) \
     _Type                           *Pointer; \
-    UINT32                          Length;
+    UINT32                          Length
 
 
 /* Null terminated, ASCII characters only */
 
 typedef struct acpi_object_string
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_BUFFER_INFO         (char)              /* String in AML stream or allocated string */
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_BUFFER_INFO(char);              /* String in AML stream or allocated string */
 
 } ACPI_OBJECT_STRING;
 
 
 typedef struct acpi_object_buffer
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_BUFFER_INFO         (UINT8)             /* Buffer in AML stream or allocated buffer */
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_BUFFER_INFO(UINT8);      /* Buffer in AML stream or allocated buffer */
     UINT32                          AmlLength;
     UINT8                           *AmlStart;
     ACPI_NAMESPACE_NODE             *Node;              /* Link back to parent node */
@@ -264,7 +264,7 @@ typedef struct acpi_object_buffer
 
 typedef struct acpi_object_package
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     ACPI_NAMESPACE_NODE             *Node;              /* Link back to parent node */
     union acpi_operand_object       **Elements;         /* Array of pointers to AcpiObjects */
     UINT8                           *AmlStart;
@@ -282,7 +282,7 @@ typedef struct acpi_object_package
 
 typedef struct acpi_object_event
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     ACPI_SEMAPHORE                  OsSemaphore;        /* Actual OS synchronization object */
 
 } ACPI_OBJECT_EVENT;
@@ -290,7 +290,7 @@ typedef struct acpi_object_event
 
 typedef struct acpi_object_mutex
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           SyncLevel;          /* 0-15, specified in Mutex() call */
     UINT16                          AcquisitionDepth;   /* Allow multiple Acquires, same thread */
     ACPI_MUTEX                      OsMutex;            /* Actual OS synchronization object */
@@ -306,7 +306,7 @@ typedef struct acpi_object_mutex
 
 typedef struct acpi_object_region
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           SpaceId;
     ACPI_NAMESPACE_NODE             *Node;              /* Containing namespace node */
     union acpi_operand_object       *Handler;           /* Handler for region access */
@@ -320,7 +320,7 @@ typedef struct acpi_object_region
 
 typedef struct acpi_object_method
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           InfoFlags;
     UINT8                           ParamCount;
     UINT8                           SyncLevel;
@@ -360,22 +360,22 @@ typedef struct acpi_object_method
  */
 #define ACPI_COMMON_NOTIFY_INFO \
     union acpi_operand_object       *NotifyList[2];     /* Handlers for system/device notifies */\
-    union acpi_operand_object       *Handler;           /* Handler for Address space */
+    union acpi_operand_object       *Handler           /* Handler for Address space */
 
 /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
 
 typedef struct acpi_object_notify_common
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_NOTIFY_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_NOTIFY_INFO;
 
 } ACPI_OBJECT_NOTIFY_COMMON;
 
 
 typedef struct acpi_object_device
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_NOTIFY_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_NOTIFY_INFO;
     ACPI_GPE_BLOCK_INFO             *GpeBlock;
 
 } ACPI_OBJECT_DEVICE;
@@ -383,8 +383,8 @@ typedef struct acpi_object_device
 
 typedef struct acpi_object_power_resource
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_NOTIFY_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_NOTIFY_INFO;
     UINT32                          SystemLevel;
     UINT32                          ResourceOrder;
 
@@ -393,13 +393,13 @@ typedef struct acpi_object_power_resource
 
 typedef struct acpi_object_processor
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
 
     /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */
 
     UINT8                           ProcId;
     UINT8                           Length;
-    ACPI_COMMON_NOTIFY_INFO
+    ACPI_COMMON_NOTIFY_INFO;
     ACPI_IO_ADDRESS                 Address;
 
 } ACPI_OBJECT_PROCESSOR;
@@ -407,8 +407,8 @@ typedef struct acpi_object_processor
 
 typedef struct acpi_object_thermal_zone
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_NOTIFY_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_NOTIFY_INFO;
 
 } ACPI_OBJECT_THERMAL_ZONE;
 
@@ -433,14 +433,14 @@ typedef struct acpi_object_thermal_zone
     UINT32                          BaseByteOffset;     /* Byte offset within containing object */\
     UINT32                          Value;              /* Value to store into the Bank or Index register */\
     UINT8                           StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\
-    UINT8                           AccessLength;       /* For serial regions/fields */
+    UINT8                           AccessLength       /* For serial regions/fields */
 
 /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
 
 typedef struct acpi_object_field_common
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_FIELD_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_FIELD_INFO;
     union acpi_operand_object       *RegionObj;         /* Parent Operation Region object (REGION/BANK fields only) */
 
 } ACPI_OBJECT_FIELD_COMMON;
@@ -448,8 +448,8 @@ typedef struct acpi_object_field_common
 
 typedef struct acpi_object_region_field
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_FIELD_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_FIELD_INFO;
     UINT16                          ResourceLength;
     union acpi_operand_object       *RegionObj;         /* Containing OpRegion object */
     UINT8                           *ResourceBuffer;    /* ResourceTemplate for serial regions/fields */
@@ -461,8 +461,8 @@ typedef struct acpi_object_region_field
 
 typedef struct acpi_object_bank_field
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_FIELD_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_FIELD_INFO;
     union acpi_operand_object       *RegionObj;         /* Containing OpRegion object */
     union acpi_operand_object       *BankObj;           /* BankSelect Register object */
 
@@ -471,8 +471,8 @@ typedef struct acpi_object_bank_field
 
 typedef struct acpi_object_index_field
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_FIELD_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_FIELD_INFO;
 
     /*
      * No "RegionObj" pointer needed since the Index and Data registers
@@ -488,8 +488,8 @@ typedef struct acpi_object_index_field
 
 typedef struct acpi_object_buffer_field
 {
-    ACPI_OBJECT_COMMON_HEADER
-    ACPI_COMMON_FIELD_INFO
+    ACPI_OBJECT_COMMON_HEADER;
+    ACPI_COMMON_FIELD_INFO;
     BOOLEAN                         IsCreateField;      /* Special case for objects created by CreateField() */
     union acpi_operand_object       *BufferObj;         /* Containing Buffer object */
 
@@ -504,7 +504,7 @@ typedef struct acpi_object_buffer_field
 
 typedef struct acpi_object_notify_handler
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     ACPI_NAMESPACE_NODE             *Node;              /* Parent device */
     UINT32                          HandlerType;        /* Type: Device/System/Both */
     ACPI_NOTIFY_HANDLER             Handler;            /* Handler address */
@@ -516,7 +516,7 @@ typedef struct acpi_object_notify_handler
 
 typedef struct acpi_object_addr_handler
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           SpaceId;
     UINT8                           HandlerFlags;
     ACPI_ADR_SPACE_HANDLER          Handler;
@@ -547,7 +547,7 @@ typedef struct acpi_object_addr_handler
  */
 typedef struct acpi_object_reference
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     UINT8                           Class;              /* Reference Class */
     UINT8                           TargetType;         /* Used for Index Op */
     UINT8                           Resolved;           /* Reference has been resolved to a value */
@@ -585,7 +585,7 @@ typedef enum
  */
 typedef struct acpi_object_extra
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     ACPI_NAMESPACE_NODE             *Method_REG;        /* _REG method for this region (if any) */
     ACPI_NAMESPACE_NODE             *ScopeNode;
     void                            *RegionContext;     /* Region-specific data */
@@ -599,7 +599,7 @@ typedef struct acpi_object_extra
 
 typedef struct acpi_object_data
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     ACPI_OBJECT_HANDLER             Handler;
     void                            *Pointer;
 
@@ -610,7 +610,7 @@ typedef struct acpi_object_data
 
 typedef struct acpi_object_cache_list
 {
-    ACPI_OBJECT_COMMON_HEADER
+    ACPI_OBJECT_COMMON_HEADER;
     union acpi_operand_object       *Next;              /* Link for object cache and internal lists*/
 
 } ACPI_OBJECT_CACHE_LIST;
diff --git a/sys/contrib/dev/acpica/source/include/acopcode.h b/sys/contrib/dev/acpica/source/include/acopcode.h
index 91cce057b1..c8d17c3554 100644
--- a/sys/contrib/dev/acpica/source/include/acopcode.h
+++ b/sys/contrib/dev/acpica/source/include/acopcode.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acoutput.h b/sys/contrib/dev/acpica/source/include/acoutput.h
index 2671e58a12..3dad379e55 100644
--- a/sys/contrib/dev/acpica/source/include/acoutput.h
+++ b/sys/contrib/dev/acpica/source/include/acoutput.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -336,6 +336,7 @@
  */
 #ifndef ACPI_NO_ERROR_MESSAGES
 #define AE_INFO                         _AcpiModuleName, __LINE__
+#define ACPI_ONCE(_fn, _plist)                  { static char _done; if (!_done) { _done = 1; _fn _plist; } }
 
 /*
  * Error reporting. Callers module and line number are inserted by AE_INFO,
@@ -344,8 +345,10 @@
  */
 #define ACPI_INFO(plist)                AcpiInfo plist
 #define ACPI_WARNING(plist)             AcpiWarning plist
+#define ACPI_WARNING_ONCE(plist)        ACPI_ONCE(AcpiWarning, plist)
 #define ACPI_EXCEPTION(plist)           AcpiException plist
 #define ACPI_ERROR(plist)               AcpiError plist
+#define ACPI_ERROR_ONCE(plist)          ACPI_ONCE(AcpiError, plist)
 #define ACPI_BIOS_WARNING(plist)        AcpiBiosWarning plist
 #define ACPI_BIOS_EXCEPTION(plist)      AcpiBiosException plist
 #define ACPI_BIOS_ERROR(plist)          AcpiBiosError plist
@@ -357,8 +360,10 @@
 
 #define ACPI_INFO(plist)
 #define ACPI_WARNING(plist)
+#define ACPI_WARNING_ONCE(plist)
 #define ACPI_EXCEPTION(plist)
 #define ACPI_ERROR(plist)
+#define ACPI_ERROR_ONCE(plist)
 #define ACPI_BIOS_WARNING(plist)
 #define ACPI_BIOS_EXCEPTION(plist)
 #define ACPI_BIOS_ERROR(plist)
diff --git a/sys/contrib/dev/acpica/source/include/acparser.h b/sys/contrib/dev/acpica/source/include/acparser.h
index 94674d8cbe..8b3d3702f4 100644
--- a/sys/contrib/dev/acpica/source/include/acparser.h
+++ b/sys/contrib/dev/acpica/source/include/acparser.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acpi.h b/sys/contrib/dev/acpica/source/include/acpi.h
index 0a50a44340..53120c948c 100644
--- a/sys/contrib/dev/acpica/source/include/acpi.h
+++ b/sys/contrib/dev/acpica/source/include/acpi.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acpiosxf.h b/sys/contrib/dev/acpica/source/include/acpiosxf.h
index af90cb9ce4..e16a51a576 100644
--- a/sys/contrib/dev/acpica/source/include/acpiosxf.h
+++ b/sys/contrib/dev/acpica/source/include/acpiosxf.h
@@ -10,7 +10,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/acpixf.h b/sys/contrib/dev/acpica/source/include/acpixf.h
index c07d0de2eb..9a1abdc2dc 100644
--- a/sys/contrib/dev/acpica/source/include/acpixf.h
+++ b/sys/contrib/dev/acpica/source/include/acpixf.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -154,7 +154,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20211217
+#define ACPI_CA_VERSION                 0x20250807
 
 #include "acconfig.h"
 #include "actypes.h"
@@ -357,6 +357,12 @@ ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_OsiData, 0);
  */
 ACPI_INIT_GLOBAL (BOOLEAN,          AcpiGbl_ReducedHardware, FALSE);
 
+/*
+ * ACPI Global Lock is mainly used for systems with SMM, so no-SMM systems
+ * (such as LoongArch) may not have and not use Global Lock.
+ */
+ACPI_INIT_GLOBAL (BOOLEAN,          AcpiGbl_UseGlobalLock, TRUE);
+
 /*
  * Maximum timeout for While() loop iterations before forced method abort.
  * This mechanism is intended to prevent infinite loops during interpreter
@@ -770,7 +776,7 @@ ACPI_EXTERNAL_RETURN_STATUS (
 ACPI_STATUS
 AcpiGetHandle (
     ACPI_HANDLE             Parent,
-    ACPI_STRING             Pathname,
+    const char              *Pathname,
     ACPI_HANDLE             *RetHandle))
 
 ACPI_EXTERNAL_RETURN_STATUS (
@@ -942,6 +948,21 @@ AcpiInstallAddressSpaceHandler (
     ACPI_ADR_SPACE_SETUP    Setup,
     void                    *Context))
 
+ACPI_EXTERNAL_RETURN_STATUS (
+ACPI_STATUS
+AcpiInstallAddressSpaceHandlerNo_Reg(
+    ACPI_HANDLE             Device,
+    ACPI_ADR_SPACE_TYPE     SpaceId,
+    ACPI_ADR_SPACE_HANDLER  Handler,
+    ACPI_ADR_SPACE_SETUP    Setup,
+    void                    *Context))
+
+ACPI_EXTERNAL_RETURN_STATUS (
+ACPI_STATUS
+AcpiExecuteRegMethods (
+    ACPI_HANDLE             Device,
+    ACPI_ADR_SPACE_TYPE     SpaceId))
+
 ACPI_EXTERNAL_RETURN_STATUS (
 ACPI_STATUS
 AcpiRemoveAddressSpaceHandler (
@@ -1280,7 +1301,7 @@ ACPI_STATUS
 AcpiLeaveSleepState (
     UINT8                   SleepState))
 
-ACPI_HW_DEPENDENT_RETURN_STATUS (
+ACPI_EXTERNAL_RETURN_STATUS (
 ACPI_STATUS
 AcpiSetFirmwareWakingVector (
     ACPI_PHYSICAL_ADDRESS   PhysicalAddress,
diff --git a/sys/contrib/dev/acpica/source/include/acpredef.h b/sys/contrib/dev/acpica/source/include/acpredef.h
index bc55155cfa..50b1b70ee6 100644
--- a/sys/contrib/dev/acpica/source/include/acpredef.h
+++ b/sys/contrib/dev/acpica/source/include/acpredef.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -580,11 +580,14 @@ const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
     {{"_DOS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
                 METHOD_NO_RETURN_VALUE}},
 
+    { {"_DSC",   METHOD_0ARGS,
+                    METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
+
     {{"_DSD",   METHOD_0ARGS,                          /* ACPI 6.0 */
                 METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Buf, 1 Pkg */
                     PACKAGE_INFO (ACPI_PTYPE2_UUID_PAIR, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_PACKAGE, 1,0),
 
-    {{"_DSM",   METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_PACKAGE),
+    {{"_DSM",   METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY) | ARG_COUNT_IS_MINIMUM,
                 METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */
 
     {{"_DSS",   METHOD_1ARGS (ACPI_TYPE_INTEGER),
diff --git a/sys/contrib/dev/acpica/source/include/acresrc.h b/sys/contrib/dev/acpica/source/include/acresrc.h
index 816d4fa438..e5a96d545e 100644
--- a/sys/contrib/dev/acpica/source/include/acresrc.h
+++ b/sys/contrib/dev/acpica/source/include/acresrc.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -506,6 +506,7 @@ extern ACPI_RSCONVERT_INFO      AcpiRsConvertPinConfig[];
 extern ACPI_RSCONVERT_INFO      AcpiRsConvertPinGroup[];
 extern ACPI_RSCONVERT_INFO      AcpiRsConvertPinGroupFunction[];
 extern ACPI_RSCONVERT_INFO      AcpiRsConvertPinGroupConfig[];
+extern ACPI_RSCONVERT_INFO      AcpiRsConvertClockInput[];
 
 /* These resources require separate get/set tables */
 
@@ -562,6 +563,7 @@ extern ACPI_RSDUMP_INFO         AcpiRsDumpPinConfig[];
 extern ACPI_RSDUMP_INFO         AcpiRsDumpPinGroup[];
 extern ACPI_RSDUMP_INFO         AcpiRsDumpPinGroupFunction[];
 extern ACPI_RSDUMP_INFO         AcpiRsDumpPinGroupConfig[];
+extern ACPI_RSDUMP_INFO         AcpiRsDumpClockInput[];
 #endif
 
 #endif  /* __ACRESRC_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/acrestyp.h b/sys/contrib/dev/acpica/source/include/acrestyp.h
index 3c258de9de..ab48a3911a 100644
--- a/sys/contrib/dev/acpica/source/include/acrestyp.h
+++ b/sys/contrib/dev/acpica/source/include/acrestyp.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -290,7 +290,10 @@ typedef struct acpi_resource_irq
     UINT8                           Shareable;
     UINT8                           WakeCapable;
     UINT8                           InterruptCount;
-    UINT8                           Interrupts[1];
+    union {
+        UINT8                       Interrupt;
+        ACPI_FLEX_ARRAY(UINT8,      Interrupts);
+    };
 
 } ACPI_RESOURCE_IRQ;
 
@@ -300,7 +303,10 @@ typedef struct acpi_resource_dma
     UINT8                           BusMaster;
     UINT8                           Transfer;
     UINT8                           ChannelCount;
-    UINT8                           Channels[1];
+    union {
+        UINT8                       Channel;
+        ACPI_FLEX_ARRAY(UINT8,      Channels);
+    };
 
 } ACPI_RESOURCE_DMA;
 
@@ -357,7 +363,7 @@ typedef struct acpi_resource_fixed_dma
 typedef struct acpi_resource_vendor
 {
     UINT16                          ByteLength;
-    UINT8                           ByteData[1];
+    UINT8                           ByteData[];
 
 } ACPI_RESOURCE_VENDOR;
 
@@ -368,7 +374,7 @@ typedef struct acpi_resource_vendor_typed
     UINT16                          ByteLength;
     UINT8                           UuidSubtype;
     UINT8                           Uuid[ACPI_UUID_LENGTH];
-    UINT8                           ByteData[1];
+    UINT8                           ByteData[];
 
 } ACPI_RESOURCE_VENDOR_TYPED;
 
@@ -538,7 +544,10 @@ typedef struct acpi_resource_extended_irq
     UINT8                           WakeCapable;
     UINT8                           InterruptCount;
     ACPI_RESOURCE_SOURCE            ResourceSource;
-    UINT32                          Interrupts[1];
+    union {
+        UINT32                      Interrupt;
+        ACPI_FLEX_ARRAY(UINT32,     Interrupts);
+    };
 
 } ACPI_RESOURCE_EXTENDED_IRQ;
 
@@ -770,6 +779,16 @@ typedef struct acpi_resource_pin_config
 
 } ACPI_RESOURCE_PIN_CONFIG;
 
+typedef struct acpi_resource_clock_input
+{
+    UINT8                           RevisionId;
+    UINT8                           Mode;
+    UINT8                           Scale;
+    UINT16                          FrequencyDivisor;
+    UINT32                          FrequencyNumerator;
+    ACPI_RESOURCE_SOURCE            ResourceSource;
+} ACPI_RESOURCE_CLOCK_INPUT;
+
 /* Values for PinConfigType field above */
 
 #define ACPI_PIN_CONFIG_DEFAULT                 0
@@ -853,7 +872,8 @@ typedef struct acpi_resource_pin_group_config
 #define ACPI_RESOURCE_TYPE_PIN_GROUP            22  /* ACPI 6.2 */
 #define ACPI_RESOURCE_TYPE_PIN_GROUP_FUNCTION   23  /* ACPI 6.2 */
 #define ACPI_RESOURCE_TYPE_PIN_GROUP_CONFIG     24  /* ACPI 6.2 */
-#define ACPI_RESOURCE_TYPE_MAX                  24
+#define ACPI_RESOURCE_TYPE_CLOCK_INPUT          25  /* ACPI 6.5 */
+#define ACPI_RESOURCE_TYPE_MAX                  25
 
 /* Master union for resource descriptors */
 
@@ -888,6 +908,7 @@ typedef union acpi_resource_data
     ACPI_RESOURCE_PIN_GROUP                 PinGroup;
     ACPI_RESOURCE_PIN_GROUP_FUNCTION        PinGroupFunction;
     ACPI_RESOURCE_PIN_GROUP_CONFIG          PinGroupConfig;
+    ACPI_RESOURCE_CLOCK_INPUT               ClockInput;
 
     /* Common fields */
 
@@ -927,8 +948,10 @@ typedef struct acpi_pci_routing_table
     UINT32                          Pin;
     UINT64                          Address;        /* here for 64-bit alignment */
     UINT32                          SourceIndex;
-    char                            Source[4];      /* pad to 64 bits so sizeof() works in all cases */
-
+    union {
+                                    char Pad[4];    /* pad to 64 bits so sizeof() works in all cases */
+                                    ACPI_FLEX_ARRAY(char, Source);
+    };
 } ACPI_PCI_ROUTING_TABLE;
 
 #endif /* __ACRESTYP_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/acstruct.h b/sys/contrib/dev/acpica/source/include/acstruct.h
index c07a319d40..b1c54f09fe 100644
--- a/sys/contrib/dev/acpica/source/include/acstruct.h
+++ b/sys/contrib/dev/acpica/source/include/acstruct.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/actables.h b/sys/contrib/dev/acpica/source/include/actables.h
index d08456437b..6f2cacbde3 100644
--- a/sys/contrib/dev/acpica/source/include/actables.h
+++ b/sys/contrib/dev/acpica/source/include/actables.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -345,16 +345,6 @@ AcpiTbPrintTableHeader(
     ACPI_PHYSICAL_ADDRESS   Address,
     ACPI_TABLE_HEADER       *Header);
 
-UINT8
-AcpiTbChecksum (
-    UINT8                   *Buffer,
-    UINT32                  Length);
-
-ACPI_STATUS
-AcpiTbVerifyChecksum (
-    ACPI_TABLE_HEADER       *Table,
-    UINT32                  Length);
-
 void
 AcpiTbCheckDsdtHeader (
     void);
diff --git a/sys/contrib/dev/acpica/source/include/actbinfo.h b/sys/contrib/dev/acpica/source/include/actbinfo.h
index 7402d97b13..fdf2a989ef 100644
--- a/sys/contrib/dev/acpica/source/include/actbinfo.h
+++ b/sys/contrib/dev/acpica/source/include/actbinfo.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -153,6 +153,7 @@
  * Macros used to generate offsets to specific table fields
  */
 #define ACPI_AGDI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_AGDI,f)
+#define ACPI_ASPT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ASPT,f)
 #define ACPI_FACS_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f)
 #define ACPI_GAS_OFFSET(f)              (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
 #define ACPI_HDR_OFFSET(f)              (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
@@ -161,6 +162,7 @@
 #define ACPI_BERT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f)
 #define ACPI_BGRT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f)
 #define ACPI_BOOT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
+#define ACPI_CCEL_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_CCEL,f)
 #define ACPI_CPEP_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f)
 #define ACPI_DBG2_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DBG2,f)
 #define ACPI_DBGP_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f)
@@ -168,6 +170,7 @@
 #define ACPI_DRTM_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f)
 #define ACPI_ECDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f)
 #define ACPI_EINJ_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f)
+#define ACPI_ERDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ERDT,f)
 #define ACPI_ERST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f)
 #define ACPI_GTDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f)
 #define ACPI_HEST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f)
@@ -179,14 +182,17 @@
 #define ACPI_MCFG_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f)
 #define ACPI_MCHI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f)
 #define ACPI_MPST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f)
+#define ACPI_MRRM_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MRRM,f)
 #define ACPI_MSCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f)
 #define ACPI_NFIT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_NFIT,f)
-#define ACPI_NHLT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_NHLT,f)
 #define ACPI_PCCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f)
 #define ACPI_PDTT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PDTT,f)
 #define ACPI_PMTT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
 #define ACPI_RASF_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f)
+#define ACPI_RAS2_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RAS2,f)
 #define ACPI_RGRT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f)
+#define ACPI_RHCT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RHCT,f)
+#define ACPI_RIMT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_RIMT,f)
 #define ACPI_S3PT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
 #define ACPI_SBST_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
 #define ACPI_SDEI_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f)
@@ -222,9 +228,18 @@
 #define ACPI_AEST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_MEMORY,f)
 #define ACPI_AEST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_SMMU,f)
 #define ACPI_AEST3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR,f)
+#define ACPI_AEST3A_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR_V2,f)
 #define ACPI_AEST4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_GIC,f)
+#define ACPI_AEST5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_PCIE,f)
+#define ACPI_AEST6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_AEST_PROXY,f)
 #define ACPI_AEST0D_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE,f)
+#define ACPI_AEST0DH_OFFSET(f)          (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_HEADER,f)
+#define ACPI_AEST0D4_OFFSET(f)          (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_4K,f)
+#define ACPI_AEST0D16_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_16K,f)
+#define ACPI_AEST0D64_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_64K,f)
 #define ACPI_AEST0E_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT,f)
+#define ACPI_AEST0EA_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f)
+#define ACPI_APMTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_APMT_NODE,f)
 #define ACPI_ASF0_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f)
 #define ACPI_ASF1_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f)
 #define ACPI_ASF1a_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f)
@@ -232,8 +247,25 @@
 #define ACPI_ASF2a_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f)
 #define ACPI_ASF3_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f)
 #define ACPI_ASF4_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f)
+#define ACPI_ASPTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASPT_HEADER,f)
+#define ACPI_ASPT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASPT_GLOBAL_REGS,f)
+#define ACPI_ASPT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASPT_SEV_MBOX_REGS,f)
+#define ACPI_ASPT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_ASPT_ACPI_MBOX_REGS,f)
+#define ACPI_CDAT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_TABLE_CDAT,f)
+#define ACPI_CDATH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_HEADER,f)
+#define ACPI_CDAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_DSMAS,f)
+#define ACPI_CDAT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_DSLBIS,f)
+#define ACPI_CDAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_DSMSCIS,f)
+#define ACPI_CDAT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_DSIS,f)
+#define ACPI_CDAT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_DSEMTS,f)
+#define ACPI_CDAT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_SSLBIS,f)
+#define ACPI_CDATE_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CDAT_SSLBE,f)
 #define ACPI_CEDT_OFFSET(f)             (UINT16) ACPI_OFFSET (ACPI_CEDT_HEADER, f)
 #define ACPI_CEDT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CEDT_CHBS, f)
+#define ACPI_CEDT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS, f)
+#define ACPI_CEDT1_TE_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS_TARGET_ELEMENT, f)
+#define ACPI_CEDT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS, f)
+#define ACPI_CEDT2_TE_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS_TARGET_ELEMENT, f)
 #define ACPI_CPEP0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
 #define ACPI_CSRT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f)
 #define ACPI_CSRT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f)
@@ -245,11 +277,26 @@
 #define ACPI_DMAR2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
 #define ACPI_DMAR3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
 #define ACPI_DMAR4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_ANDD,f)
+#define ACPI_DMAR5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_SATC,f)
+#define ACPI_DMAR6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DMAR_SIDP,f)
 #define ACPI_DRTM0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST,f)
 #define ACPI_DRTM1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST,f)
 #define ACPI_DRTM1a_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE,f)
 #define ACPI_DRTM2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_DRTM_DPS_ID,f)
 #define ACPI_EINJ0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
+#define ACPI_ERDT_HDR_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_SUBTBL_HDR_16,f)
+#define ACPI_ERDT_CACD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_CACD,f)
+#define ACPI_ERDT_CARC_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_CARC,f)
+#define ACPI_ERDT_CARD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_CARD,f)
+#define ACPI_ERDT_CMRC_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_CMRC,f)
+#define ACPI_ERDT_CMRD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_CMRD,f)
+#define ACPI_ERDT_DACD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_DACD,f)
+#define ACPI_ERDT_DACD_PATH_OFFSET(f)   (UINT16) ACPI_OFFSET (ACPI_ERDT_DACD_PATHS,f)
+#define ACPI_ERDT_IBAD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_IBAD,f)
+#define ACPI_ERDT_IBRD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_IBRD,f)
+#define ACPI_ERDT_MARC_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_MARC,f)
+#define ACPI_ERDT_MMRC_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_MMRC,f)
+#define ACPI_ERDT_RMDD_OFFSET(f)        (UINT16) ACPI_OFFSET (ACPI_ERDT_RMDD,f)
 #define ACPI_ERST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f)
 #define ACPI_FPDTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
 #define ACPI_FPDT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT_POINTER,f)
@@ -314,13 +361,36 @@
 #define ACPI_MADT14_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f)
 #define ACPI_MADT15_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f)
 #define ACPI_MADT16_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_MULTIPROC_WAKEUP,f)
+#define ACPI_MADT17_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_CORE_PIC,f)
+#define ACPI_MADT18_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_LIO_PIC,f)
+#define ACPI_MADT19_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_HT_PIC,f)
+#define ACPI_MADT20_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_EIO_PIC,f)
+#define ACPI_MADT21_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_MSI_PIC,f)
+#define ACPI_MADT22_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_BIO_PIC,f)
+#define ACPI_MADT23_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_LPC_PIC,f)
+#define ACPI_MADT24_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_RINTC,f)
+#define ACPI_MADT25_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_IMSIC,f)
+#define ACPI_MADT26_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_APLIC,f)
+#define ACPI_MADT27_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MADT_PLIC,f)
+#define ACPI_MADT128_OFFSET(f)          (UINT16) ACPI_OFFSET (ACPI_MADT_OEM_DATA,f)
 #define ACPI_MADTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
 #define ACPI_MCFG0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f)
+#define ACPI_MPAM0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPAM_MSC_NODE,f)
+#define ACPI_MPAM1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_NODE,f)
+#define ACPI_MPAM1A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_CACHE_LOCATOR,f)
+#define ACPI_MPAM1B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_MEMORY_LOCATOR,f)
+#define ACPI_MPAM1C_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_SMMU_INTERFACE,f)
+#define ACPI_MPAM1D_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE,f)
+#define ACPI_MPAM1E_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_ACPI_INTERFACE,f)
+#define ACPI_MPAM1F_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE,f)
+#define ACPI_MPAM1G_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPAM_RESOURCE_GENERIC_LOCATOR,f)
+#define ACPI_MPAM2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPAM_FUNC_DEPS,f)
 #define ACPI_MPST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f)
 #define ACPI_MPST0A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f)
 #define ACPI_MPST0B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f)
 #define ACPI_MPST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f)
 #define ACPI_MPST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f)
+#define ACPI_MRRM0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MRRM_MEM_RANGE_ENTRY,f)
 #define ACPI_MSCT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f)
 #define ACPI_NFITH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NFIT_HEADER,f)
 #define ACPI_NFIT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f)
@@ -331,23 +401,6 @@
 #define ACPI_NFIT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NFIT_DATA_REGION,f)
 #define ACPI_NFIT6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NFIT_FLUSH_ADDRESS,f)
 #define ACPI_NFIT7_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NFIT_CAPABILITIES,f)
-#define ACPI_NHLT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_ENDPOINT,f)
-#define ACPI_NHLT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f)
-#define ACPI_NHLT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_WAVE_EXTENSIBLE,f)
-#define ACPI_NHLT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_FORMAT_CONFIG,f)
-#define ACPI_NHLT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_FORMATS_CONFIG,f)
-#define ACPI_NHLT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f)
-#define ACPI_NHLT5A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A,f)
-#define ACPI_NHLT5B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B,f)
-#define ACPI_NHLT5C_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C,f)
-#define ACPI_NHLT6_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_CONFIG,f)
-#define ACPI_NHLT6A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_COUNT,f)
-#define ACPI_NHLT6B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG,f)
-#define ACPI_NHLT7_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_COUNT,f)
-#define ACPI_NHLT7A_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_DATA,f)
-#define ACPI_NHLT7B_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_DATA_B,f)
-#define ACPI_NHLT8_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_TABLE_TERMINATOR,f)
-#define ACPI_NHLT9_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION,f)
 #define ACPI_PCCT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f)
 #define ACPI_PCCT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED,f)
 #define ACPI_PCCT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED_TYPE2,f)
@@ -372,6 +425,18 @@
 #define ACPI_PRMTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f)
 #define ACPI_PRMT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f)
 #define ACPI_PRMT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f)
+#define ACPI_RAS2_PCC_DESC_OFFSET(f)    (UINT16) ACPI_OFFSET (ACPI_RAS2_PCC_DESC,f)
+#define ACPI_RHCTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RHCT_NODE_HEADER,f)
+#define ACPI_RHCT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RHCT_ISA_STRING,f)
+#define ACPI_RHCT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RHCT_CMO_NODE,f)
+#define ACPI_RHCT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RHCT_MMU_NODE,f)
+#define ACPI_RHCTFFFF_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_RHCT_HART_INFO,f)
+#define ACPI_RIMTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_NODE,f)
+#define ACPI_RIMTI_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_IOMMU,f)
+#define ACPI_RIMTW_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_IOMMU_WIRE_GSI,f)
+#define ACPI_RIMTP_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_PCIE_RC,f)
+#define ACPI_RIMTM_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_ID_MAPPING,f)
+#define ACPI_RIMTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_RIMT_PLATFORM_DEVICE,f)
 #define ACPI_S3PTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
 #define ACPI_S3PT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
 #define ACPI_S3PT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
@@ -391,6 +456,7 @@
 #define ACPI_SRAT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f)
 #define ACPI_SRAT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f)
 #define ACPI_SRAT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
+#define ACPI_SRAT7_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_RINTC_AFFINITY,f)
 #define ACPI_SVKL0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f)
 #define ACPI_TCPA_CLIENT_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
 #define ACPI_TCPA_SERVER_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
@@ -414,10 +480,14 @@
 #define ACPI_AEST0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_AEST_PROCESSOR,f,o)
 #define ACPI_AEST0D_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERFACE,f,o)
 #define ACPI_AEST0E_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT,f,o)
+#define ACPI_AEST0EA_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f,o)
 #define ACPI_AGDI_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_AGDI,f,o)
+#define ACPI_APMTN_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_APMT_NODE,f,o)
 #define ACPI_BGRT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_BGRT,f,o)
+#define ACPI_DMAR0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f,o)
 #define ACPI_DRTM_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_DRTM,f,o)
 #define ACPI_DRTM1a_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_DRTM_RESOURCE,f,o)
+#define ACPI_ERDT_RMDD_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_ERDT_RMDD,f,o)
 #define ACPI_FADT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_FADT,f,o)
 #define ACPI_FACS_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_FACS,f,o)
 #define ACPI_HPET_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o)
@@ -429,6 +499,7 @@
 #define ACPI_SRAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
 #define ACPI_SRAT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o)
 #define ACPI_SRAT5_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f,o)
+#define ACPI_SRAT7_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_RINTC_AFFINITY,f,o)
 #define ACPI_GTDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
 #define ACPI_GTDT0a_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o)
 #define ACPI_GTDT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o)
@@ -455,6 +526,8 @@
 #define ACPI_MADT10_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o)
 #define ACPI_MADT11_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o)
 #define ACPI_MADT13_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_MSI_FRAME,f,o)
+#define ACPI_MADT14_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_REDISTRIBUTOR,f,o)
+#define ACPI_MADT15_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_TRANSLATOR,f,o)
 #define ACPI_MPST0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o)
 #define ACPI_MPST2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o)
 #define ACPI_NFIT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_NFIT_SYSTEM_ADDRESS,f,o)
diff --git a/sys/contrib/dev/acpica/source/include/actbl.h b/sys/contrib/dev/acpica/source/include/actbl.h
index f70f1b5909..e3bfafd9bb 100644
--- a/sys/contrib/dev/acpica/source/include/actbl.h
+++ b/sys/contrib/dev/acpica/source/include/actbl.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -213,15 +213,15 @@
 
 typedef struct acpi_table_header
 {
-    char                    Signature[ACPI_NAMESEG_SIZE];       /* ASCII table signature */
-    UINT32                  Length;                             /* Length of table in bytes, including this header */
-    UINT8                   Revision;                           /* ACPI Specification minor version number */
-    UINT8                   Checksum;                           /* To make sum of entire table == 0 */
-    char                    OemId[ACPI_OEM_ID_SIZE];            /* ASCII OEM identification */
-    char                    OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */
-    UINT32                  OemRevision;                        /* OEM revision number */
-    char                    AslCompilerId[ACPI_NAMESEG_SIZE];   /* ASCII ASL compiler vendor ID */
-    UINT32                  AslCompilerRevision;                /* ASL compiler version */
+    char                    Signature[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;       /* ASCII table signature */
+    UINT32                  Length;                                            /* Length of table in bytes, including this header */
+    UINT8                   Revision;                                          /* ACPI Specification minor version number */
+    UINT8                   Checksum;                                          /* To make sum of entire table == 0 */
+    char                    OemId[ACPI_OEM_ID_SIZE] ACPI_NONSTRING;            /* ASCII OEM identification */
+    char                    OemTableId[ACPI_OEM_TABLE_ID_SIZE] ACPI_NONSTRING; /* ASCII OEM table identification */
+    UINT32                  OemRevision;                                       /* OEM revision number */
+    char                    AslCompilerId[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;   /* ASCII ASL compiler vendor ID */
+    UINT32                  AslCompilerRevision;                               /* ASL compiler version */
 
 } ACPI_TABLE_HEADER;
 
diff --git a/sys/contrib/dev/acpica/source/include/actbl1.h b/sys/contrib/dev/acpica/source/include/actbl1.h
index 09e68293ad..ec04f0a0ab 100644
--- a/sys/contrib/dev/acpica/source/include/actbl1.h
+++ b/sys/contrib/dev/acpica/source/include/actbl1.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -170,6 +170,7 @@
  */
 #define ACPI_SIG_AEST           "AEST"      /* Arm Error Source Table */
 #define ACPI_SIG_ASF            "ASF!"      /* Alert Standard Format table */
+#define ACPI_SIG_ASPT           "ASPT"      /* AMD Secure Processor Table */
 #define ACPI_SIG_BERT           "BERT"      /* Boot Error Record Table */
 #define ACPI_SIG_BGRT           "BGRT"      /* Boot Graphics Resource Table */
 #define ACPI_SIG_BOOT           "BOOT"      /* Simple Boot Flag Table */
@@ -189,6 +190,7 @@
 #define ACPI_SIG_HMAT           "HMAT"      /* Heterogeneous Memory Attributes Table */
 #define ACPI_SIG_HPET           "HPET"      /* High Precision Event Timer table */
 #define ACPI_SIG_IBFT           "IBFT"      /* iSCSI Boot Firmware Table */
+#define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics Table*/
 
 #define ACPI_SIG_S3PT           "S3PT"      /* S3 Performance (sub)Table */
 #define ACPI_SIG_PCCS           "PCC"       /* PCC Shared Memory Region */
@@ -258,6 +260,16 @@ typedef struct acpi_whea_header
 } ACPI_WHEA_HEADER;
 
 
+/* Larger subtable header (when Length can exceed 255) */
+
+typedef struct acpi_subtbl_hdr_16
+{
+    UINT16                  Type;
+    UINT16                  Length;
+
+} ACPI_SUBTBL_HDR_16;
+
+
 /*******************************************************************************
  *
  * ASF - Alert Standard Format table (Signature "ASF!")
@@ -397,6 +409,86 @@ typedef struct acpi_asf_address
 
 } ACPI_ASF_ADDRESS;
 
+/*******************************************************************************
+ *
+ * ASPT - AMD Secure Processor Table (Signature "ASPT")
+ *        Revision 0x1
+ *
+ * Conforms to AMD Socket SP5/SP6 Platform ASPT Rev1 Specification,
+ * 12 September 2022
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_aspt
+{
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT32                  NumEntries;
+
+} ACPI_TABLE_ASPT;
+
+
+/* ASPT subtable header */
+
+typedef struct acpi_aspt_header
+{
+    UINT16                  Type;
+    UINT16                  Length;
+
+} ACPI_ASPT_HEADER;
+
+
+/* Values for Type field above */
+
+enum AcpiAsptType
+{
+    ACPI_ASPT_TYPE_GLOBAL_REGS      = 0,
+    ACPI_ASPT_TYPE_SEV_MBOX_REGS    = 1,
+    ACPI_ASPT_TYPE_ACPI_MBOX_REGS   = 2,
+    ACPI_ASPT_TYPE_UNKNOWN          = 3,
+};
+
+/*
+ * ASPT subtables
+ */
+
+/* 0: ASPT Global Registers */
+
+typedef struct acpi_aspt_global_regs
+{
+    ACPI_ASPT_HEADER        Header;
+    UINT32                  Reserved;
+    UINT64                  FeatureRegAddr;
+    UINT64                  IrqEnRegAddr;
+    UINT64                  IrqStRegAddr;
+
+} ACPI_ASPT_GLOBAL_REGS;
+
+
+/* 1: ASPT SEV Mailbox Registers */
+
+typedef struct acpi_aspt_sev_mbox_regs
+{
+    ACPI_ASPT_HEADER        Header;
+    UINT8                   MboxIrqId;
+    UINT8                   Reserved[3];
+    UINT64                  CmdRespRegAddr;
+    UINT64                  CmdBufLoRegAddr;
+    UINT64                  CmdBufHiRegAddr;
+
+} ACPI_ASPT_SEV_MBOX_REGS;
+
+
+/* 2: ASPT ACPI Mailbox Registers */
+
+typedef struct acpi_aspt_acpi_mbox_regs
+{
+    ACPI_ASPT_HEADER        Header;
+    UINT32                  Reserved1;
+    UINT64                  CmdRespRegAddr;
+    UINT64                  Reserved2[2];
+
+} ACPI_ASPT_ACPI_MBOX_REGS;
+
 
 /*******************************************************************************
  *
@@ -494,12 +586,157 @@ typedef struct acpi_table_boot
 } ACPI_TABLE_BOOT;
 
 
+/*******************************************************************************
+ *
+ * CDAT - Coherent Device Attribute Table
+ *        Version 1
+ *
+ * Conforms to the "Coherent Device Attribute Table (CDAT) Specification
+ " (Revision 1.01, October 2020.)
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_cdat
+{
+    UINT32                  Length;                             /* Length of table in bytes, including this header */
+    UINT8                   Revision;                           /* ACPI Specification minor version number */
+    UINT8                   Checksum;                           /* To make sum of entire table == 0 */
+    UINT8                   Reserved[6];
+    UINT32                  Sequence;                           /* Used to detect runtime CDAT table changes */
+
+} ACPI_TABLE_CDAT;
+
+
+/* CDAT common subtable header */
+
+typedef struct acpi_cdat_header
+{
+    UINT8                   Type;
+    UINT8                   Reserved;
+    UINT16                  Length;
+
+} ACPI_CDAT_HEADER;
+
+/* Values for Type field above */
+
+enum AcpiCdatType
+{
+    ACPI_CDAT_TYPE_DSMAS                = 0,
+    ACPI_CDAT_TYPE_DSLBIS               = 1,
+    ACPI_CDAT_TYPE_DSMSCIS              = 2,
+    ACPI_CDAT_TYPE_DSIS                 = 3,
+    ACPI_CDAT_TYPE_DSEMTS               = 4,
+    ACPI_CDAT_TYPE_SSLBIS               = 5,
+    ACPI_CDAT_TYPE_RESERVED             = 6   /* 6 through 0xFF are reserved */
+};
+
+
+/* Subtable 0: Device Scoped Memory Affinity Structure (DSMAS) */
+
+typedef struct acpi_cdat_dsmas
+{
+    UINT8                   DsmadHandle;
+    UINT8                   Flags;
+    UINT16                  Reserved;
+    UINT64                  DpaBaseAddress;
+    UINT64                  DpaLength;
+
+} ACPI_CDAT_DSMAS;
+
+/* Flags for subtable above */
+
+#define ACPI_CDAT_DSMAS_NON_VOLATILE        (1 << 2)
+#define ACPI_CDAT_DSMAS_SHAREABLE           (1 << 3)
+#define ACPI_CDAT_DSMAS_READ_ONLY           (1 << 6)
+
+
+/* Subtable 1: Device scoped Latency and Bandwidth Information Structure (DSLBIS) */
+
+typedef struct acpi_cdat_dslbis
+{
+    UINT8                   Handle;
+    UINT8                   Flags; /* If Handle matches a DSMAS handle, the definition of this field matches
+                                    * Flags field in HMAT System Locality Latency */
+    UINT8                   DataType;
+    UINT8                   Reserved;
+    UINT64                  EntryBaseUnit;
+    UINT16                  Entry[3];
+    UINT16                  Reserved2;
+
+} ACPI_CDAT_DSLBIS;
+
+
+/* Subtable 2: Device Scoped Memory Side Cache Information Structure (DSMSCIS) */
+
+typedef struct acpi_cdat_dsmscis
+{
+    UINT8                   DsmasHandle;
+    UINT8                   Reserved[3];
+    UINT64                  SideCacheSize;
+    UINT32                  CacheAttributes;
+
+} ACPI_CDAT_DSMSCIS;
+
+
+/* Subtable 3: Device Scoped Initiator Structure (DSIS) */
+
+typedef struct acpi_cdat_dsis
+{
+    UINT8                   Flags;
+    UINT8                   Handle;
+    UINT16                  Reserved;
+
+} ACPI_CDAT_DSIS;
+
+/* Flags for above subtable */
+
+#define ACPI_CDAT_DSIS_MEM_ATTACHED         (1 << 0)
+
+
+/* Subtable 4: Device Scoped EFI Memory Type Structure (DSEMTS) */
+
+typedef struct acpi_cdat_dsemts
+{
+    UINT8                   DsmasHandle;
+    UINT8                   MemoryType;
+    UINT16                  Reserved;
+    UINT64                  DpaOffset;
+    UINT64                  RangeLength;
+
+} ACPI_CDAT_DSEMTS;
+
+
+/* Subtable 5: Switch Scoped Latency and Bandwidth Information Structure (SSLBIS) */
+
+typedef struct acpi_cdat_sslbis
+{
+    UINT8                   DataType;
+    UINT8                   Reserved[3];
+    UINT64                  EntryBaseUnit;
+
+} ACPI_CDAT_SSLBIS;
+
+
+/* Sub-subtable for above, SslbeEntries field */
+
+typedef struct acpi_cdat_sslbe
+{
+    UINT16                  PortxId;
+    UINT16                  PortyId;
+    UINT16                  LatencyOrBandwidth;
+    UINT16                  Reserved;
+
+} ACPI_CDAT_SSLBE;
+
+#define ACPI_CDAT_SSLBIS_US_PORT	0x0100
+#define ACPI_CDAT_SSLBIS_ANY_PORT	0xffff
+
 /*******************************************************************************
  *
  * CEDT - CXL Early Discovery Table
  *        Version 1
  *
- * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
+ * Conforms to the "CXL Early Discovery Table" (CXL 2.0, October 2020)
  *
  ******************************************************************************/
 
@@ -525,7 +762,9 @@ enum AcpiCedtType
 {
     ACPI_CEDT_TYPE_CHBS                 = 0,
     ACPI_CEDT_TYPE_CFMWS                = 1,
-    ACPI_CEDT_TYPE_RESERVED             = 2,
+    ACPI_CEDT_TYPE_CXIMS                = 2,
+    ACPI_CEDT_TYPE_RDPAS                = 3,
+    ACPI_CEDT_TYPE_RESERVED             = 4,
 };
 
 /* Values for version field above */
@@ -574,19 +813,60 @@ typedef struct acpi_cedt_cfmws
 
 } ACPI_CEDT_CFMWS;
 
+typedef struct acpi_cedt_cfmws_target_element
+{
+    UINT32                  InterleaveTarget;
+
+} ACPI_CEDT_CFMWS_TARGET_ELEMENT;
+
 /* Values for Interleave Arithmetic field above */
 
-#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO	(0)
+#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO   (0)
+#define ACPI_CEDT_CFMWS_ARITHMETIC_XOR      (1)
 
 /* Values for Restrictions field above */
 
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2		(1)
-#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3		(1<<1)
-#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE	(1<<2)
-#define ACPI_CEDT_CFMWS_RESTRICT_PMEM		(1<<3)
-#define ACPI_CEDT_CFMWS_RESTRICT_FIXED		(1<<4)
+#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2      (1)
+#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3      (1<<1)
+#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE   (1<<2)
+#define ACPI_CEDT_CFMWS_RESTRICT_PMEM       (1<<3)
+#define ACPI_CEDT_CFMWS_RESTRICT_FIXED      (1<<4)
+
+/* 2: CXL XOR Interleave Math Structure */
+
+typedef struct acpi_cedt_cxims {
+    ACPI_CEDT_HEADER        Header;
+    UINT16                  Reserved1;
+    UINT8                   Hbig;
+    UINT8                   NrXormaps;
+    UINT64                  XormapList[];
+} ACPI_CEDT_CXIMS;
+
+typedef struct acpi_cedt_cxims_target_element
+{
+    UINT64                   Xormap;
+
+} ACPI_CEDT_CXIMS_TARGET_ELEMENT;
 
 
+/* 3: CXL RCEC Downstream Port Association Structure */
+
+struct acpi_cedt_rdpas {
+    ACPI_CEDT_HEADER        Header;
+    UINT16                  Segment;
+    UINT16                  Bdf;
+    UINT8                   Protocol;
+    UINT64                  Address;
+};
+
+/* Masks for bdf field above */
+#define ACPI_CEDT_RDPAS_BUS_MASK            0xff00
+#define ACPI_CEDT_RDPAS_DEVICE_MASK         0x00f8
+#define ACPI_CEDT_RDPAS_FUNCTION_MASK       0x0007
+
+#define ACPI_CEDT_RDPAS_PROTOCOL_IO        (0)
+#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM  (1)
+
 /*******************************************************************************
  *
  * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
@@ -777,6 +1057,7 @@ typedef struct acpi_dbg2_device
 #define ACPI_DBG2_16550_WITH_GAS    0x0012
 #define ACPI_DBG2_SDM845_7_372MHZ   0x0013
 #define ACPI_DBG2_INTEL_LPSS        0x0014
+#define ACPI_DBG2_RISCV_SBI_CON     0x0015
 
 #define ACPI_DBG2_1394_STANDARD     0x0000
 
@@ -847,7 +1128,9 @@ enum AcpiDmarType
     ACPI_DMAR_TYPE_ROOT_ATS             = 2,
     ACPI_DMAR_TYPE_HARDWARE_AFFINITY    = 3,
     ACPI_DMAR_TYPE_NAMESPACE            = 4,
-    ACPI_DMAR_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
+    ACPI_DMAR_TYPE_SATC                 = 5,
+    ACPI_DMAR_TYPE_SIDP                 = 6,
+    ACPI_DMAR_TYPE_RESERVED             = 7     /* 7 and greater are reserved */
 };
 
 
@@ -857,7 +1140,8 @@ typedef struct acpi_dmar_device_scope
 {
     UINT8                   EntryType;
     UINT8                   Length;
-    UINT16                  Reserved;
+    UINT8                   Flags;
+    UINT8                   Reserved;
     UINT8                   EnumerationId;
     UINT8                   Bus;
 
@@ -894,7 +1178,7 @@ typedef struct acpi_dmar_hardware_unit
 {
     ACPI_DMAR_HEADER        Header;
     UINT8                   Flags;
-    UINT8                   Reserved;
+    UINT8                   Size;
     UINT16                  Segment;
     UINT64                  Address;            /* Register Base Address */
 
@@ -957,11 +1241,37 @@ typedef struct acpi_dmar_andd
     ACPI_DMAR_HEADER        Header;
     UINT8                   Reserved[3];
     UINT8                   DeviceNumber;
-    char                    DeviceName[1];
+    union {
+        char                  __pad;
+        ACPI_FLEX_ARRAY(char, DeviceName);
+    };
 
 } ACPI_DMAR_ANDD;
 
 
+/* 5: SoC Integrated Address Translation Cache (SATC)  */
+
+typedef struct acpi_dmar_satc
+{
+    ACPI_DMAR_HEADER        Header;
+    UINT8                   Flags;
+    UINT8                   Reserved;
+    UINT16                  Segment;
+
+} ACPI_DMAR_SATC;
+
+
+/* 6: SoC Integrated Device Property Reporting Structure */
+
+typedef struct acpi_dmar_sidp
+{
+    ACPI_DMAR_HEADER        Header;
+    UINT16                  Reserved;
+    UINT16                  Segment;
+
+} ACPI_DMAR_SIDP;
+
+
 /*******************************************************************************
  *
  * DRTM - Dynamic Root of Trust for Measurement table
@@ -998,7 +1308,7 @@ typedef struct acpi_table_drtm
 typedef struct acpi_drtm_vtable_list
 {
     UINT32                  ValidatedTableCount;
-    UINT64                  ValidatedTables[1];
+    UINT64                  ValidatedTables[];
 
 } ACPI_DRTM_VTABLE_LIST;
 
@@ -1017,7 +1327,7 @@ typedef struct acpi_drtm_resource
 typedef struct acpi_drtm_resource_list
 {
     UINT32                  ResourceCount;
-    ACPI_DRTM_RESOURCE      Resources[1];
+    ACPI_DRTM_RESOURCE      Resources[];
 
 } ACPI_DRTM_RESOURCE_LIST;
 
@@ -1045,7 +1355,7 @@ typedef struct acpi_table_ecdt
     ACPI_GENERIC_ADDRESS    Data;               /* Address of EC data register */
     UINT32                  Uid;                /* Unique ID - must be same as the EC _UID method */
     UINT8                   Gpe;                /* The GPE for the EC */
-    UINT8                   Id[1];              /* Full namepath of the EC in the ACPI namespace */
+    UINT8                   Id[];               /* Full namepath of the EC in the ACPI namespace */
 
 } ACPI_TABLE_ECDT;
 
@@ -1084,17 +1394,18 @@ typedef struct acpi_einj_entry
 
 enum AcpiEinjActions
 {
-    ACPI_EINJ_BEGIN_OPERATION               = 0,
-    ACPI_EINJ_GET_TRIGGER_TABLE             = 1,
-    ACPI_EINJ_SET_ERROR_TYPE                = 2,
-    ACPI_EINJ_GET_ERROR_TYPE                = 3,
-    ACPI_EINJ_END_OPERATION                 = 4,
-    ACPI_EINJ_EXECUTE_OPERATION             = 5,
-    ACPI_EINJ_CHECK_BUSY_STATUS             = 6,
-    ACPI_EINJ_GET_COMMAND_STATUS            = 7,
-    ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS   = 8,
-    ACPI_EINJ_GET_EXECUTE_TIMINGS           = 9,
-    ACPI_EINJ_ACTION_RESERVED               = 10,    /* 10 and greater are reserved */
+    ACPI_EINJ_BEGIN_OPERATION               = 0x0,
+    ACPI_EINJ_GET_TRIGGER_TABLE             = 0x1,
+    ACPI_EINJ_SET_ERROR_TYPE                = 0x2,
+    ACPI_EINJ_GET_ERROR_TYPE                = 0x3,
+    ACPI_EINJ_END_OPERATION                 = 0x4,
+    ACPI_EINJ_EXECUTE_OPERATION             = 0x5,
+    ACPI_EINJ_CHECK_BUSY_STATUS             = 0x6,
+    ACPI_EINJ_GET_COMMAND_STATUS            = 0x7,
+    ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS   = 0x8,
+    ACPI_EINJ_GET_EXECUTE_TIMINGS           = 0x9,
+    ACPI_EINJV2_GET_ERROR_TYPE              = 0x11,
+    ACPI_EINJ_ACTION_RESERVED               = 0x12,   /* 0x12 and greater are reserved */
     ACPI_EINJ_TRIGGER_ERROR                 = 0xFF   /* Except for this value */
 };
 
@@ -1171,6 +1482,12 @@ enum AcpiEinjCommandStatus
 #define ACPI_EINJ_PLATFORM_CORRECTABLE      (1<<9)
 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE    (1<<10)
 #define ACPI_EINJ_PLATFORM_FATAL            (1<<11)
+#define ACPI_EINJ_CXL_CACHE_CORRECTABLE     (1<<12)
+#define ACPI_EINJ_CXL_CACHE_UNCORRECTABLE   (1<<13)
+#define ACPI_EINJ_CXL_CACHE_FATAL           (1<<14)
+#define ACPI_EINJ_CXL_MEM_CORRECTABLE       (1<<15)
+#define ACPI_EINJ_CXL_MEM_UNCORRECTABLE     (1<<16)
+#define ACPI_EINJ_CXL_MEM_FATAL             (1<<17)
 #define ACPI_EINJ_VENDOR_DEFINED            (1<<31)
 
 
@@ -1979,7 +2296,7 @@ typedef struct acpi_hmat_cache
     UINT32                  Reserved1;
     UINT64                  CacheSize;
     UINT32                  CacheAttributes;
-    UINT16                  Reserved2;
+    UINT16                  AddressMode;
     UINT16                  NumberOfSMBIOSHandles;
 
 } ACPI_HMAT_CACHE;
@@ -1992,6 +2309,9 @@ typedef struct acpi_hmat_cache
 #define ACPI_HMAT_WRITE_POLICY          (0x0000F000)
 #define ACPI_HMAT_CACHE_LINE_SIZE       (0xFFFF0000)
 
+#define ACPI_HMAT_CACHE_MODE_UNKNOWN            (0)
+#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR    (1)
+
 /* Values for cache associativity flag */
 
 #define ACPI_HMAT_CA_NONE                     (0)
diff --git a/sys/contrib/dev/acpica/source/include/actbl2.h b/sys/contrib/dev/acpica/source/include/actbl2.h
index eaa2e243e8..a74b6d555a 100644
--- a/sys/contrib/dev/acpica/source/include/actbl2.h
+++ b/sys/contrib/dev/acpica/source/include/actbl2.h
@@ -1,6 +1,6 @@
 /******************************************************************************
  *
- * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
+ * Name: actbl2.h - ACPI Table Definitions
  *
  *****************************************************************************/
 
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -169,15 +169,20 @@
  * the wrong signature.
  */
 #define ACPI_SIG_AGDI           "AGDI"      /* Arm Generic Diagnostic Dump and Reset Device Interface */
+#define ACPI_SIG_APMT           "APMT"      /* Arm Performance Monitoring Unit table */
 #define ACPI_SIG_BDAT           "BDAT"      /* BIOS Data ACPI Table */
+#define ACPI_SIG_CCEL           "CCEL"      /* CC Event Log Table */
+#define ACPI_SIG_CDAT           "CDAT"      /* Coherent Device Attribute Table */
+#define ACPI_SIG_ERDT           "ERDT"      /* Enhanced Resource Director Technology */
 #define ACPI_SIG_IORT           "IORT"      /* IO Remapping Table */
 #define ACPI_SIG_IVRS           "IVRS"      /* I/O Virtualization Reporting Structure */
 #define ACPI_SIG_LPIT           "LPIT"      /* Low Power Idle Table */
 #define ACPI_SIG_MADT           "APIC"      /* Multiple APIC Description Table */
 #define ACPI_SIG_MCFG           "MCFG"      /* PCI Memory Mapped Configuration table */
 #define ACPI_SIG_MCHI           "MCHI"      /* Management Controller Host Interface table */
+#define ACPI_SIG_MPAM           "MPAM"      /* Memory System Resource Partitioning and Monitoring Table */
 #define ACPI_SIG_MPST           "MPST"      /* Memory Power State Table */
-#define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics Table */
+#define ACPI_SIG_MRRM           "MRRM"      /* Memory Range and Region Mapping table */
 #define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table */
 #define ACPI_SIG_NFIT           "NFIT"      /* NVDIMM Firmware Interface Table */
 #define ACPI_SIG_NHLT           "NHLT"      /* Non HD Audio Link Table */
@@ -188,11 +193,15 @@
 #define ACPI_SIG_PPTT           "PPTT"      /* Processor Properties Topology Table */
 #define ACPI_SIG_PRMT           "PRMT"      /* Platform Runtime Mechanism Table */
 #define ACPI_SIG_RASF           "RASF"      /* RAS Feature table */
+#define ACPI_SIG_RAS2           "RAS2"      /* RAS2 Feature table */
 #define ACPI_SIG_RGRT           "RGRT"      /* Regulatory Graphics Resource Table */
+#define ACPI_SIG_RHCT           "RHCT"      /* RISC-V Hart Capabilities Table */
+#define ACPI_SIG_RIMT           "RIMT"      /* RISC-V IO Mapping Table */
 #define ACPI_SIG_SBST           "SBST"      /* Smart Battery Specification Table */
 #define ACPI_SIG_SDEI           "SDEI"      /* Software Delegated Exception Interface Table */
 #define ACPI_SIG_SDEV           "SDEV"      /* Secure Devices table */
 #define ACPI_SIG_SVKL           "SVKL"      /* Storage Volume Key Location Table */
+#define ACPI_SIG_SWFT           "SWFT"      /* SoundWire File Table */
 #define ACPI_SIG_TDEL           "TDEL"      /* TD Event Log Table */
 
 
@@ -227,13 +236,12 @@
 typedef struct acpi_table_aest
 {
     ACPI_TABLE_HEADER       Header;
-    void                    *NodeArray[];
 
 } ACPI_TABLE_AEST;
 
 /* Common Subtable header - one per Node Structure (Subtable) */
 
-typedef struct              acpi_aest_hdr
+typedef struct acpi_aest_hdr
 {
     UINT8                   Type;
     UINT16                  Length;
@@ -255,7 +263,9 @@ typedef struct              acpi_aest_hdr
 #define ACPI_AEST_SMMU_ERROR_NODE           2
 #define ACPI_AEST_VENDOR_ERROR_NODE         3
 #define ACPI_AEST_GIC_ERROR_NODE            4
-#define ACPI_AEST_NODE_TYPE_RESERVED        5 /* 5 and above are reserved */
+#define ACPI_AEST_PCIE_ERROR_NODE           5
+#define ACPI_AEST_PROXY_ERROR_NODE          6
+#define ACPI_AEST_NODE_TYPE_RESERVED        7 /* 7 and above are reserved */
 
 
 /*
@@ -264,7 +274,7 @@ typedef struct              acpi_aest_hdr
 
 /* 0: Processor Error */
 
-typedef struct              acpi_aest_processor
+typedef struct acpi_aest_processor
 {
     UINT32                  ProcessorId;
     UINT8                   ResourceType;
@@ -284,7 +294,7 @@ typedef struct              acpi_aest_processor
 
 /* 0R: Processor Cache Resource Substructure */
 
-typedef struct              acpi_aest_processor_cache
+typedef struct acpi_aest_processor_cache
 {
     UINT32                  CacheReference;
     UINT32                  Reserved;
@@ -300,7 +310,7 @@ typedef struct              acpi_aest_processor_cache
 
 /* 1R: Processor TLB Resource Substructure */
 
-typedef struct              acpi_aest_processor_tlb
+typedef struct acpi_aest_processor_tlb
 {
     UINT32                  TlbLevel;
     UINT32                  Reserved;
@@ -309,7 +319,7 @@ typedef struct              acpi_aest_processor_tlb
 
 /* 2R: Processor Generic Resource Substructure */
 
-typedef struct              acpi_aest_processor_generic
+typedef struct acpi_aest_processor_generic
 {
     UINT32                   Resource;
 
@@ -317,7 +327,7 @@ typedef struct              acpi_aest_processor_generic
 
 /* 1: Memory Error */
 
-typedef struct              acpi_aest_memory
+typedef struct acpi_aest_memory
 {
     UINT32                  SratProximityDomain;
 
@@ -325,7 +335,7 @@ typedef struct              acpi_aest_memory
 
 /* 2: Smmu Error */
 
-typedef struct              acpi_aest_smmu
+typedef struct acpi_aest_smmu
 {
     UINT32                  IortNodeReference;
     UINT32                  SubcomponentReference;
@@ -334,7 +344,7 @@ typedef struct              acpi_aest_smmu
 
 /* 3: Vendor Defined */
 
-typedef struct              acpi_aest_vendor
+typedef struct acpi_aest_vendor
 {
     UINT32                  AcpiHid;
     UINT32                  AcpiUid;
@@ -342,9 +352,19 @@ typedef struct              acpi_aest_vendor
 
 } ACPI_AEST_VENDOR;
 
+/* 3: Vendor Defined V2 */
+
+typedef struct acpi_aest_vendor_v2
+{
+    UINT64                  AcpiHid;
+    UINT32                  AcpiUid;
+    UINT8                   VendorSpecificData[16];
+
+} ACPI_AEST_VENDOR_V2;
+
 /* 4: Gic Error */
 
-typedef struct              acpi_aest_gic
+typedef struct acpi_aest_gic
 {
     UINT32                  InterfaceType;
     UINT32                  InstanceId;
@@ -359,10 +379,26 @@ typedef struct              acpi_aest_gic
 #define ACPI_AEST_GIC_ITS                   3
 #define ACPI_AEST_GIC_RESERVED              4   /* 4 and above are reserved */
 
+/* 5: PCIe Error */
+
+typedef struct acpi_aest_pcie
+{
+    UINT32                  IortNodeReference;
+
+} ACPI_AEST_PCIE;
+
+
+/* 6: Proxy Error */
+
+typedef struct acpi_aest_proxy
+{
+    UINT64                  NodeAddress;
+
+} ACPI_AEST_PROXY;
 
 /* Node Interface Structure */
 
-typedef struct              acpi_aest_node_interface
+typedef struct acpi_aest_node_interface
 {
     UINT8                   Type;
     UINT8                   Reserved[3];
@@ -376,15 +412,71 @@ typedef struct              acpi_aest_node_interface
 
 } ACPI_AEST_NODE_INTERFACE;
 
+/* Node Interface Structure V2*/
+
+typedef struct acpi_aest_node_interface_header
+{
+    UINT8                   Type;
+    UINT8                   GroupFormat;
+    UINT8                   Reserved[2];
+    UINT32                  Flags;
+    UINT64                  Address;
+    UINT32                  ErrorRecordIndex;
+    UINT32                  ErrorRecordCount;
+
+} ACPI_AEST_NODE_INTERFACE_HEADER;
+
+#define ACPI_AEST_NODE_GROUP_FORMAT_4K             0
+#define ACPI_AEST_NODE_GROUP_FORMAT_16K            1
+#define ACPI_AEST_NODE_GROUP_FORMAT_64K            2
+
+typedef struct acpi_aest_node_interface_common
+{
+    UINT32                             ErrorNodeDevice;
+    UINT32                             ProcessorAffinity;
+    UINT64                             ErrorGroupRegisterBase;
+    UINT64                             FaultInjectRegisterBase;
+    UINT64                             InterruptConfigRegisterBase;
+
+} ACPI_AEST_NODE_INTERFACE_COMMON;
+
+typedef struct acpi_aest_node_interface_4k
+{
+    UINT64                             ErrorRecordImplemented;
+    UINT64                             ErrorStatusReporting;
+    UINT64                             AddressingMode;
+    ACPI_AEST_NODE_INTERFACE_COMMON    Common;
+
+} ACPI_AEST_NODE_INTERFACE_4K;
+
+typedef struct acpi_aest_node_interface_16k
+{
+    UINT64                             ErrorRecordImplemented[4];
+    UINT64                             ErrorStatusReporting[4];
+    UINT64                             AddressingMode[4];
+    ACPI_AEST_NODE_INTERFACE_COMMON    Common;
+
+} ACPI_AEST_NODE_INTERFACE_16K;
+
+typedef struct acpi_aest_node_interface_64k
+{
+    INT64                              ErrorRecordImplemented[14];
+    UINT64                             ErrorStatusReporting[14];
+    UINT64                             AddressingMode[14];
+    ACPI_AEST_NODE_INTERFACE_COMMON    Common;
+
+} ACPI_AEST_NODE_INTERFACE_64K;
+
 /* Values for Type field above */
 
-#define ACPI_AEST_NODE_SYSTEM_REGISTER      0
-#define ACPI_AEST_NODE_MEMORY_MAPPED        1
-#define ACPI_AEST_XFACE_RESERVED            2   /* 2 and above are reserved */
+#define ACPI_AEST_NODE_SYSTEM_REGISTER                    0
+#define ACPI_AEST_NODE_MEMORY_MAPPED                      1
+#define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED        2
+#define ACPI_AEST_XFACE_RESERVED                          3   /* 2 and above are reserved */
 
 /* Node Interrupt Structure */
 
-typedef struct              acpi_aest_node_interrupt
+typedef struct acpi_aest_node_interrupt
 {
     UINT8                   Type;
     UINT8                   Reserved[2];
@@ -395,6 +487,18 @@ typedef struct              acpi_aest_node_interrupt
 
 } ACPI_AEST_NODE_INTERRUPT;
 
+/* Node Interrupt Structure V2 */
+
+typedef struct acpi_aest_node_interrupt_v2
+{
+    UINT8                   Type;
+    UINT8                   Reserved[2];
+    UINT8                   Flags;
+    UINT32                  Gsiv;
+    UINT8                   Reserved1[4];
+
+} ACPI_AEST_NODE_INTERRUPT_V2;
+
 /* Values for Type field above */
 
 #define ACPI_AEST_NODE_FAULT_HANDLING       0
@@ -424,6 +528,86 @@ typedef struct acpi_table_agdi
 #define ACPI_AGDI_SIGNALING_MODE (1)
 
 
+/*******************************************************************************
+ *
+ * APMT - ARM Performance Monitoring Unit Table
+ *
+ * Conforms to:
+ * ARM Performance Monitoring Unit Architecture 1.0 Platform Design Document
+ * ARM DEN0117 v1.0 November 25, 2021
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_apmt {
+    ACPI_TABLE_HEADER Header;    /* Common ACPI table header */
+} ACPI_TABLE_APMT;
+
+#define ACPI_APMT_NODE_ID_LENGTH                4
+
+/*
+ * APMT subtables
+ */
+typedef struct acpi_apmt_node {
+    UINT16                       Length;
+    UINT8                        Flags;
+    UINT8                        Type;
+    UINT32                       Id;
+    UINT64                       InstPrimary;
+    UINT32                       InstSecondary;
+    UINT64                       BaseAddress0;
+    UINT64                       BaseAddress1;
+    UINT32                       OvflwIrq;
+    UINT32                       Reserved;
+    UINT32                       OvflwIrqFlags;
+    UINT32                       ProcAffinity;
+    UINT32                       ImplId;
+} ACPI_APMT_NODE;
+
+/* Masks for Flags field above */
+
+#define ACPI_APMT_FLAGS_DUAL_PAGE               (1<<0)
+#define ACPI_APMT_FLAGS_AFFINITY                (1<<1)
+#define ACPI_APMT_FLAGS_ATOMIC                  (1<<2)
+
+/* Values for Flags dual page field above */
+
+#define ACPI_APMT_FLAGS_DUAL_PAGE_NSUPP         (0<<0)
+#define ACPI_APMT_FLAGS_DUAL_PAGE_SUPP          (1<<0)
+
+/* Values for Flags processor affinity field above */
+#define ACPI_APMT_FLAGS_AFFINITY_PROC           (0<<1)
+#define ACPI_APMT_FLAGS_AFFINITY_PROC_CONTAINER (1<<1)
+
+/* Values for Flags 64-bit atomic field above */
+#define ACPI_APMT_FLAGS_ATOMIC_NSUPP            (0<<2)
+#define ACPI_APMT_FLAGS_ATOMIC_SUPP             (1<<2)
+
+/* Values for Type field above */
+
+enum acpi_apmt_node_type {
+    ACPI_APMT_NODE_TYPE_MC                      = 0x00,
+    ACPI_APMT_NODE_TYPE_SMMU                    = 0x01,
+    ACPI_APMT_NODE_TYPE_PCIE_ROOT               = 0x02,
+    ACPI_APMT_NODE_TYPE_ACPI                    = 0x03,
+    ACPI_APMT_NODE_TYPE_CACHE                   = 0x04,
+    ACPI_APMT_NODE_TYPE_COUNT
+};
+
+/* Masks for ovflw_irq_flags field above */
+
+#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE          (1<<0)
+#define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE          (1<<1)
+
+/* Values for ovflw_irq_flags mode field above */
+
+#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_LEVEL    (0<<0)
+#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_EDGE     (1<<0)
+
+/* Values for ovflw_irq_flags type field above */
+
+#define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE_WIRED    (0<<1)
+
+
 /*******************************************************************************
  *
  * BDAT - BIOS Data ACPI Table
@@ -440,13 +624,260 @@ typedef struct acpi_table_bdat
 
 } ACPI_TABLE_BDAT;
 
+/*******************************************************************************
+ *
+ * CCEL - CC-Event Log
+ *        From: "Guest-Host-Communication Interface (GHCI) for Intel
+ *        Trust Domain Extensions (Intel TDX)". Feb 2022
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_ccel
+{
+    ACPI_TABLE_HEADER       Header; /* Common ACPI table header */
+    UINT8                   CCType;
+    UINT8                   CCSubType;
+    UINT16                  Reserved;
+    UINT64                  LogAreaMinimumLength;
+    UINT64                  LogAreaStartAddress;
+
+} ACPI_TABLE_CCEL;
+
+/*******************************************************************************
+ *
+ * ERDT - Enhanced Resource Director Technology (ERDT) table
+ *
+ * Conforms to "Intel Resource Director Technology Architecture Specification"
+ * Version 1.1, January 2025
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_erdt
+{
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT32                  MaxClos;            /* Maximum classes of service */
+    UINT8                   Reserved[24];
+    UINT8                   Erdt_Substructures[];
+
+} ACPI_TABLE_ERDT;
+
+
+/* Values for subtable type in ACPI_SUBTBL_HDR_16 */
+
+enum AcpiErdtType
+{
+    ACPI_ERDT_TYPE_RMDD                 = 0,
+    ACPI_ERDT_TYPE_CACD                 = 1,
+    ACPI_ERDT_TYPE_DACD                 = 2,
+    ACPI_ERDT_TYPE_CMRC                 = 3,
+    ACPI_ERDT_TYPE_MMRC                 = 4,
+    ACPI_ERDT_TYPE_MARC                 = 5,
+    ACPI_ERDT_TYPE_CARC                 = 6,
+    ACPI_ERDT_TYPE_CMRD                 = 7,
+    ACPI_ERDT_TYPE_IBRD                 = 8,
+    ACPI_ERDT_TYPE_IBAD                 = 9,
+    ACPI_ERDT_TYPE_CARD                 = 10,
+    ACPI_ERDT_TYPE_RESERVED             = 11    /* 11 and above are reserved */
+
+};
+
+/*
+ * ERDT Subtables, correspond to Type in ACPI_SUBTBL_HDR_16
+ */
+
+/* 0: RMDD - Resource Management Domain Description */
+
+typedef struct acpi_erdt_rmdd
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT16                  Flags;
+    UINT16                  IO_l3_Slices;       /* Number of slices in IO cache */
+    UINT8                   IO_l3_Sets;         /* Number of sets in IO cache */
+    UINT8                   IO_l3_Ways;         /* Number of ways in IO cache */
+    UINT64                  Reserved;
+    UINT16                  DomainId;           /* Unique domain ID */
+    UINT32                  MaxRmid;            /* Maximun RMID supported */
+    UINT64                  CregBase;           /* Control Register Base Address */
+    UINT16                  CregSize;           /* Control Register Size (4K pages) */
+    UINT8                   RmddStructs[];
+
+} ACPI_ERDT_RMDD;
+
+
+/* 1: CACD - CPU Agent Collection Description */
+
+typedef struct acpi_erdt_cacd
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT16                  Reserved;
+    UINT16                  DomainId;           /* Unique domain ID */
+    UINT32                  X2APICIDS[];
+
+} ACPI_ERDT_CACD;
+
+
+/* 2: DACD - Device Agent Collection Description */
+
+typedef struct acpi_erdt_dacd
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT16                  Reserved;
+    UINT16                  DomainId;           /* Unique domain ID */
+    UINT8                   DevPaths[];
+
+} ACPI_ERDT_DACD;
+
+typedef struct acpi_erdt_dacd_dev_paths
+{
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT16                  Segment;
+    UINT8                   Reserved;
+    UINT8                   StartBus;
+    UINT8                   Path[];
+
+} ACPI_ERDT_DACD_PATHS;
+
+
+/* 3: CMRC - Cache Monitoring Registers for CPU Agents */
+
+typedef struct acpi_erdt_cmrc
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved1;
+    UINT32                  Flags;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[11];
+    UINT64                  CmtRegBase;
+    UINT32                  CmtRegSize;
+    UINT16                  ClumpSize;
+    UINT16                  ClumpStride;
+    UINT64                  UpScale;
+
+} ACPI_ERDT_CMRC;
+
+
+/* 4: MMRC - Memory-bandwidth Monitoring Registers for CPU Agents */
+
+typedef struct acpi_erdt_mmrc
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved1;
+    UINT32                  Flags;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[11];
+    UINT64                  RegBase;
+    UINT32                  RegSize;
+    UINT8                   CounterWidth;
+    UINT64                  UpScale;
+    UINT8                   Reserved3[7];
+    UINT32                  CorrFactorListLen;
+    UINT32                  CorrFactorList[];
+
+} ACPI_ERDT_MMRC;
+
+
+/* 5: MARC - Memory-bandwidth Allocation Registers for CPU Agents */
+
+typedef struct acpi_erdt_marc
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT16                  Reserved1;
+    UINT16                  Flags;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[7];
+    UINT64                  RegBaseOpt;
+    UINT64                  RegBaseMin;
+    UINT64                  RegBaseMax;
+    UINT32                  MbaRegSize;
+    UINT32                  MbaCtrlRange;
+
+} ACPI_ERDT_MARC;
+
+
+/* 6: CARC - Cache Allocation Registers for CPU Agents */
+
+typedef struct acpi_erdt_carc
+{
+    ACPI_SUBTBL_HDR_16      Header;
+
+} ACPI_ERDT_CARC;
+
+
+/* 7: CMRD - Cache Monitoring Registers for Device Agents */
+
+typedef struct acpi_erdt_cmrd
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved1;
+    UINT32                  Flags;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[11];
+    UINT64                  RegBase;
+    UINT32                  RegSize;
+    UINT16                  CmtRegOff;
+    UINT16                  CmtClumpSize;
+    UINT64                  UpScale;
+
+} ACPI_ERDT_CMRD;
+
+
+/* 8: IBRD - Cache Monitoring Registers for Device Agents */
+
+typedef struct acpi_erdt_ibrd
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved1;
+    UINT32                  Flags;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[11];
+    UINT64                  RegBase;
+    UINT32                  RegSize;
+    UINT16                  TotalBwOffset;
+    UINT16                  IOMissBwOffset;
+    UINT16                  TotalBwClump;
+    UINT16                  IOMissBwClump;
+    UINT8                   Reserved3[7];
+    UINT8                   CounterWidth;
+    UINT64                  UpScale;
+    UINT32                  CorrFactorListLen;
+    UINT32                  CorrFactorList[];
+
+} ACPI_ERDT_IBRD;
+
+
+/* 9: IBAD - IO bandwidth Allocation Registers for device agents */
+
+typedef struct acpi_erdt_ibad
+{
+    ACPI_SUBTBL_HDR_16      Header;
+
+} ACPI_ERDT_IBAD;
+
+
+/* 10: CARD - IO bandwidth Allocation Registers for Device Agents */
+
+typedef struct acpi_erdt_card
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved1;
+    UINT32                  Flags;
+    UINT32                  ContentionMask;
+    UINT8                   IndexFn;
+    UINT8                   Reserved2[7];
+    UINT64                  RegBase;
+    UINT32                  RegSize;
+    UINT16                  CatRegOffset;
+    UINT16                  CatRegBlockSize;
+
+} ACPI_ERDT_CARD;
+
 
 /*******************************************************************************
  *
  * IORT - IO Remapping Table
  *
  * Conforms to "IO Remapping Table System Software on ARM Platforms",
- * Document number: ARM DEN 0049E.b, Feb 2021
+ * Document number: ARM DEN 0049E.f, Apr 2024
  *
  ******************************************************************************/
 
@@ -471,7 +902,7 @@ typedef struct acpi_iort_node
     UINT32                  Identifier;
     UINT32                  MappingCount;
     UINT32                  MappingOffset;
-    char                    NodeData[1];
+    char                    NodeData[];
 
 } ACPI_IORT_NODE;
 
@@ -529,6 +960,7 @@ typedef struct acpi_iort_memory_access
 
 #define ACPI_IORT_MF_COHERENCY          (1)
 #define ACPI_IORT_MF_ATTRIBUTES         (1<<1)
+#define ACPI_IORT_MF_CANWBS             (1<<2)
 
 
 /*
@@ -537,7 +969,7 @@ typedef struct acpi_iort_memory_access
 typedef struct acpi_iort_its_group
 {
     UINT32                  ItsCount;
-    UINT32                  Identifiers[1];         /* GIC ITS identifier array */
+    UINT32                  Identifiers[];          /* GIC ITS identifier array */
 
 } ACPI_IORT_ITS_GROUP;
 
@@ -547,7 +979,7 @@ typedef struct acpi_iort_named_component
     UINT32                  NodeFlags;
     UINT64                  MemoryProperties;       /* Memory access properties */
     UINT8                   MemoryAddressLimit;     /* Memory address size limit */
-    char                    DeviceName[1];          /* Path of namespace object */
+    char                    DeviceName[];           /* Path of namespace object */
 
 } ACPI_IORT_NAMED_COMPONENT;
 
@@ -562,7 +994,8 @@ typedef struct acpi_iort_root_complex
     UINT32                  AtsAttribute;
     UINT32                  PciSegmentNumber;
     UINT8                   MemoryAddressLimit;     /* Memory address size limit */
-    UINT8                   Reserved[3];            /* Reserved, must be zero */
+    UINT16                  PasidCapabilities;      /* PASID Capabilities */
+    UINT8                   Reserved[];             /* Reserved, must be zero */
 
 } ACPI_IORT_ROOT_COMPLEX;
 
@@ -572,6 +1005,8 @@ typedef struct acpi_iort_root_complex
 #define ACPI_IORT_PRI_SUPPORTED         (1<<1)  /* The root complex PRI support */
 #define ACPI_IORT_PASID_FWD_SUPPORTED   (1<<2)  /* The root complex PASID forward support */
 
+/* Masks for PasidCapabilities field above */
+#define ACPI_IORT_PASID_MAX_WIDTH       (0x1F)  /* Bits 0-4 */
 
 typedef struct acpi_iort_smmu
 {
@@ -584,7 +1019,7 @@ typedef struct acpi_iort_smmu
     UINT32                  ContextInterruptOffset;
     UINT32                  PmuInterruptCount;
     UINT32                  PmuInterruptOffset;
-    UINT64                  Interrupts[1];          /* Interrupt array */
+    UINT64                  Interrupts[];           /* Interrupt array */
 
 } ACPI_IORT_SMMU;
 
@@ -641,6 +1076,7 @@ typedef struct acpi_iort_smmu_v3
 #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE   (1)
 #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE     (3<<1)
 #define ACPI_IORT_SMMU_V3_PXM_VALID         (1<<3)
+#define ACPI_IORT_SMMU_V3_DEVICEID_VALID    (1<<4)
 
 typedef struct acpi_iort_pmcg
 {
@@ -658,6 +1094,25 @@ typedef struct acpi_iort_rmr {
 
 } ACPI_IORT_RMR;
 
+/* Masks for Flags field above */
+#define ACPI_IORT_RMR_REMAP_PERMITTED      (1)
+#define ACPI_IORT_RMR_ACCESS_PRIVILEGE     (1<<1)
+
+/*
+ * Macro to access the Access Attributes in flags field above:
+ *  Access Attributes is encoded in bits 9:2
+ */
+#define ACPI_IORT_RMR_ACCESS_ATTRIBUTES(flags)          (((flags) >> 2) & 0xFF)
+
+/* Values for above Access Attributes */
+
+#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRNE   0x00
+#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRE    0x01
+#define ACPI_IORT_RMR_ATTR_DEVICE_NGRE     0x02
+#define ACPI_IORT_RMR_ATTR_DEVICE_GRE      0x03
+#define ACPI_IORT_RMR_ATTR_NORMAL_NC       0x04
+#define ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB  0x05
+
 typedef struct acpi_iort_rmr_desc {
     UINT64 BaseAddress;
     UINT64 Length;
@@ -1004,7 +1459,19 @@ enum AcpiMadtType
     ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR    = 14,
     ACPI_MADT_TYPE_GENERIC_TRANSLATOR       = 15,
     ACPI_MADT_TYPE_MULTIPROC_WAKEUP         = 16,
-    ACPI_MADT_TYPE_RESERVED                 = 17    /* 17 and greater are reserved */
+    ACPI_MADT_TYPE_CORE_PIC                 = 17,
+    ACPI_MADT_TYPE_LIO_PIC                  = 18,
+    ACPI_MADT_TYPE_HT_PIC                   = 19,
+    ACPI_MADT_TYPE_EIO_PIC                  = 20,
+    ACPI_MADT_TYPE_MSI_PIC                  = 21,
+    ACPI_MADT_TYPE_BIO_PIC                  = 22,
+    ACPI_MADT_TYPE_LPC_PIC                  = 23,
+    ACPI_MADT_TYPE_RINTC                    = 24,
+    ACPI_MADT_TYPE_IMSIC                    = 25,
+    ACPI_MADT_TYPE_APLIC                    = 26,
+    ACPI_MADT_TYPE_PLIC                     = 27,
+    ACPI_MADT_TYPE_RESERVED                 = 28,   /* 28 to 0x7F are reserved */
+    ACPI_MADT_TYPE_OEM_RESERVED             = 0x80  /* 0x80 to 0xFF are reserved for OEM use */
 };
 
 
@@ -1108,7 +1575,7 @@ typedef struct acpi_madt_local_sapic
     UINT8                   Reserved[3];        /* Reserved, must be zero */
     UINT32                  LapicFlags;
     UINT32                  Uid;                /* Numeric UID - ACPI 3.0 */
-    char                    UidString[1];       /* String UID  - ACPI 3.0 */
+    char                    UidString[];        /* String UID  - ACPI 3.0 */
 
 } ACPI_MADT_LOCAL_SAPIC;
 
@@ -1159,7 +1626,7 @@ typedef struct acpi_madt_local_x2apic_nmi
 } ACPI_MADT_LOCAL_X2APIC_NMI;
 
 
-/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 changes) */
+/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */
 
 typedef struct acpi_madt_generic_interrupt
 {
@@ -1180,6 +1647,7 @@ typedef struct acpi_madt_generic_interrupt
     UINT8                   EfficiencyClass;
     UINT8                   Reserved2[1];
     UINT16                  SpeInterrupt;       /* ACPI 6.3 */
+    UINT16                  TrbeInterrupt;      /* ACPI 6.5 */
 
 } ACPI_MADT_GENERIC_INTERRUPT;
 
@@ -1188,7 +1656,8 @@ typedef struct acpi_madt_generic_interrupt
 /* ACPI_MADT_ENABLED                    (1)      Processor is usable if set */
 #define ACPI_MADT_PERFORMANCE_IRQ_MODE  (1<<1)  /* 01: Performance Interrupt Mode */
 #define ACPI_MADT_VGIC_IRQ_MODE         (1<<2)  /* 02: VGIC Maintenance Interrupt mode */
-
+#define ACPI_MADT_GICC_ONLINE_CAPABLE   (1<<3)  /* 03: Processor is online capable  */
+#define ACPI_MADT_GICC_NON_COHERENT     (1<<4)  /* 04: GIC redistributor is not coherent */
 
 /* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */
 
@@ -1241,25 +1710,30 @@ typedef struct acpi_madt_generic_msi_frame
 typedef struct acpi_madt_generic_redistributor
 {
     ACPI_SUBTABLE_HEADER    Header;
-    UINT16                  Reserved;           /* reserved - must be zero */
+    UINT8                   Flags;
+    UINT8                   Reserved;           /* reserved - must be zero */
     UINT64                  BaseAddress;
     UINT32                  Length;
 
 } ACPI_MADT_GENERIC_REDISTRIBUTOR;
 
+#define ACPI_MADT_GICR_NON_COHERENT     (1)
 
 /* 15: Generic Translator (ACPI 6.0) */
 
 typedef struct acpi_madt_generic_translator
 {
     ACPI_SUBTABLE_HEADER    Header;
-    UINT16                  Reserved;           /* reserved - must be zero */
+    UINT8                   Flags;
+    UINT8                   Reserved;           /* reserved - must be zero */
     UINT32                  TranslationId;
     UINT64                  BaseAddress;
     UINT32                  Reserved2;
 
 } ACPI_MADT_GENERIC_TRANSLATOR;
 
+#define ACPI_MADT_ITS_NON_COHERENT      (1)
+
 /* 16: Multiprocessor wakeup (ACPI 6.4) */
 
 typedef struct acpi_madt_multiproc_wakeup
@@ -1271,8 +1745,8 @@ typedef struct acpi_madt_multiproc_wakeup
 
 } ACPI_MADT_MULTIPROC_WAKEUP;
 
-#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE	2032
-#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE	2048
+#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE        2032
+#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE  2048
 
 typedef struct acpi_madt_multiproc_wakeup_mailbox
 {
@@ -1287,6 +1761,205 @@ typedef struct acpi_madt_multiproc_wakeup_mailbox
 
 #define ACPI_MP_WAKE_COMMAND_WAKEUP    1
 
+/* 17: CPU Core Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_core_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT32                  ProcessorId;
+    UINT32                  CoreId;
+    UINT32                  Flags;
+} ACPI_MADT_CORE_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtCorePicVersion {
+    ACPI_MADT_CORE_PIC_VERSION_NONE     = 0,
+    ACPI_MADT_CORE_PIC_VERSION_V1       = 1,
+    ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2	/* 2 and greater are reserved */
+};
+
+/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_lio_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT64                  Address;
+    UINT16                  Size;
+    UINT8                   Cascade[2];
+    UINT32                  CascadeMap[2];
+} ACPI_MADT_LIO_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtLioPicVersion {
+    ACPI_MADT_LIO_PIC_VERSION_NONE      = 0,
+    ACPI_MADT_LIO_PIC_VERSION_V1        = 1,
+    ACPI_MADT_LIO_PIC_VERSION_RESERVED  = 2	/* 2 and greater are reserved */
+};
+
+/* 19: HT Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_ht_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT64                  Address;
+    UINT16                  Size;
+    UINT8                   Cascade[8];
+} ACPI_MADT_HT_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtHtPicVersion {
+    ACPI_MADT_HT_PIC_VERSION_NONE       = 0,
+    ACPI_MADT_HT_PIC_VERSION_V1         = 1,
+    ACPI_MADT_HT_PIC_VERSION_RESERVED   = 2	/* 2 and greater are reserved */
+};
+
+/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_eio_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT8                   Cascade;
+    UINT8                   Node;
+    UINT64                  NodeMap;
+} ACPI_MADT_EIO_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtEioPicVersion {
+    ACPI_MADT_EIO_PIC_VERSION_NONE      = 0,
+    ACPI_MADT_EIO_PIC_VERSION_V1        = 1,
+    ACPI_MADT_EIO_PIC_VERSION_RESERVED  = 2	/* 2 and greater are reserved */
+};
+
+/* 21: MSI Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_msi_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT64                  MsgAddress;
+    UINT32                  Start;
+    UINT32                  Count;
+} ACPI_MADT_MSI_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtMsiPicVersion {
+    ACPI_MADT_MSI_PIC_VERSION_NONE      = 0,
+    ACPI_MADT_MSI_PIC_VERSION_V1        = 1,
+    ACPI_MADT_MSI_PIC_VERSION_RESERVED  = 2	/* 2 and greater are reserved */
+};
+
+/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_bio_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT64                  Address;
+    UINT16                  Size;
+    UINT16                  Id;
+    UINT16                  GsiBase;
+} ACPI_MADT_BIO_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtBioPicVersion {
+    ACPI_MADT_BIO_PIC_VERSION_NONE        = 0,
+    ACPI_MADT_BIO_PIC_VERSION_V1          = 1,
+    ACPI_MADT_BIO_PIC_VERSION_RESERVED    = 2	/* 2 and greater are reserved */
+};
+
+/* 23: LPC Interrupt Controller (ACPI 6.5) */
+
+typedef struct acpi_madt_lpc_pic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT64                  Address;
+    UINT16                  Size;
+    UINT8                   Cascade;
+} ACPI_MADT_LPC_PIC;
+
+/* Values for Version field above */
+
+enum AcpiMadtLpcPicVersion {
+    ACPI_MADT_LPC_PIC_VERSION_NONE       = 0,
+    ACPI_MADT_LPC_PIC_VERSION_V1         = 1,
+    ACPI_MADT_LPC_PIC_VERSION_RESERVED   = 2	/* 2 and greater are reserved */
+};
+
+/* 24: RISC-V INTC */
+typedef struct acpi_madt_rintc {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT8                   Reserved;
+    UINT32                  Flags;
+    UINT64                  HartId;
+    UINT32                  Uid;                /* ACPI processor UID */
+    UINT32                  ExtIntcId;          /* External INTC Id */
+    UINT64                  ImsicAddr;          /* IMSIC base address */
+    UINT32                  ImsicSize;          /* IMSIC size */
+} ACPI_MADT_RINTC;
+
+/* Values for RISC-V INTC Version field above */
+
+enum AcpiMadtRintcVersion {
+    ACPI_MADT_RINTC_VERSION_NONE       = 0,
+    ACPI_MADT_RINTC_VERSION_V1         = 1,
+    ACPI_MADT_RINTC_VERSION_RESERVED   = 2	/* 2 and greater are reserved */
+};
+
+/* 25: RISC-V IMSIC */
+typedef struct acpi_madt_imsic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT8                   Reserved;
+    UINT32                  Flags;
+    UINT16                  NumIds;
+    UINT16                  NumGuestIds;
+    UINT8                   GuestIndexBits;
+    UINT8                   HartIndexBits;
+    UINT8                   GroupIndexBits;
+    UINT8                   GroupIndexShift;
+} ACPI_MADT_IMSIC;
+
+/* 26: RISC-V APLIC */
+typedef struct acpi_madt_aplic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT8                   Id;
+    UINT32                  Flags;
+    UINT8                   HwId[8];
+    UINT16                  NumIdcs;
+    UINT16                  NumSources;
+    UINT32                  GsiBase;
+    UINT64                  BaseAddr;
+    UINT32                  Size;
+} ACPI_MADT_APLIC;
+
+/* 27: RISC-V PLIC */
+typedef struct acpi_madt_plic {
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Version;
+    UINT8                   Id;
+    UINT8                   HwId[8];
+    UINT16                  NumIrqs;
+    UINT16                  MaxPrio;
+    UINT32                  Flags;
+    UINT32                  Size;
+    UINT64                  BaseAddr;
+    UINT32                  GsiBase;
+} ACPI_MADT_PLIC;
+
+
+/* 80: OEM data */
+
+typedef struct acpi_madt_oem_data
+{
+    ACPI_FLEX_ARRAY(UINT8,  OemData);
+} ACPI_MADT_OEM_DATA;
+
 
 /*
  * Common flags fields for MADT subtables
@@ -1373,6 +2046,132 @@ typedef struct acpi_table_mchi
 
 } ACPI_TABLE_MCHI;
 
+/*******************************************************************************
+ *
+ * MPAM - Memory System Resource Partitioning and Monitoring
+ *
+ * Conforms to "ACPI for Memory System Resource Partitioning and Monitoring 2.0"
+ * Document number: ARM DEN 0065, December, 2022.
+ *
+ ******************************************************************************/
+
+/* MPAM RIS locator types. Table 11, Location types */
+enum AcpiMpamLocatorType {
+    ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE    = 0,
+    ACPI_MPAM_LOCATION_TYPE_MEMORY             = 1,
+    ACPI_MPAM_LOCATION_TYPE_SMMU               = 2,
+    ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE       = 3,
+    ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE        = 4,
+    ACPI_MPAM_LOCATION_TYPE_INTERCONNECT       = 5,
+    ACPI_MPAM_LOCATION_TYPE_UNKNOWN            = 0xFF
+};
+
+/* MPAM Functional dependency descriptor. Table 10 */
+typedef struct acpi_mpam_func_deps
+{
+    UINT32                        Producer;
+    UINT32                        Reserved;
+} ACPI_MPAM_FUNC_DEPS;
+
+/* MPAM Processor cache locator descriptor. Table 13 */
+typedef struct acpi_mpam_resource_cache_locator
+{
+    UINT64                        CacheReference;
+    UINT32                        Reserved;
+} ACPI_MPAM_RESOURCE_CACHE_LOCATOR;
+
+/* MPAM Memory locator descriptor. Table 14 */
+typedef struct acpi_mpam_resource_memory_locator
+{
+    UINT64                        ProximityDomain;
+    UINT32                        Reserved;
+} ACPI_MPAM_RESOURCE_MEMORY_LOCATOR;
+
+/* MPAM SMMU locator descriptor. Table 15 */
+typedef struct acpi_mpam_resource_smmu_locator
+{
+    UINT64                        SmmuInterface;
+    UINT32                        Reserved;
+} ACPI_MPAM_RESOURCE_SMMU_INTERFACE;
+
+/* MPAM Memory-side cache locator descriptor. Table 16 */
+typedef struct acpi_mpam_resource_memcache_locator
+{
+    UINT8                         Reserved[7];
+    UINT8                         Level;
+    UINT32                        Reference;
+} ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE;
+
+/* MPAM ACPI device locator descriptor. Table 17 */
+typedef struct acpi_mpam_resource_acpi_locator
+{
+    UINT64                        AcpiHwId;
+    UINT32                        AcpiUniqueId;
+} ACPI_MPAM_RESOURCE_ACPI_INTERFACE;
+
+/* MPAM Interconnect locator descriptor. Table 18 */
+typedef struct acpi_mpam_resource_interconnect_locator
+{
+    UINT64                        InterConnectDescTblOff;
+    UINT32                        Reserved;
+} ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE;
+
+/* MPAM Locator structure. Table 12 */
+typedef struct acpi_mpam_resource_generic_locator
+{
+    UINT64                        Descriptor1;
+    UINT32                        Descriptor2;
+} ACPI_MPAM_RESOURCE_GENERIC_LOCATOR;
+
+typedef union acpi_mpam_resource_locator
+{
+    ACPI_MPAM_RESOURCE_CACHE_LOCATOR             CacheLocator;
+    ACPI_MPAM_RESOURCE_MEMORY_LOCATOR            MemoryLocator;
+    ACPI_MPAM_RESOURCE_SMMU_INTERFACE            SmmuLocator;
+    ACPI_MPAM_RESOURCE_MEMCACHE_INTERFACE        MemCacheLocator;
+    ACPI_MPAM_RESOURCE_ACPI_INTERFACE            AcpiLocator;
+    ACPI_MPAM_RESOURCE_INTERCONNECT_INTERFACE    InterconnectIfcLocator;
+    ACPI_MPAM_RESOURCE_GENERIC_LOCATOR           GenericLocator;
+} ACPI_MPAM_RESOURCE_LOCATOR;
+
+/* Memory System Component Resource Node Structure Table 9 */
+typedef struct acpi_mpam_resource_node
+{
+    UINT32                        Identifier;
+    UINT8                         RISIndex;
+    UINT16                        Reserved1;
+    UINT8                         LocatorType;
+    ACPI_MPAM_RESOURCE_LOCATOR    Locator;
+    UINT32                        NumFunctionalDeps;
+} ACPI_MPAM_RESOURCE_NODE;
+
+/* Memory System Component (MSC) Node Structure. Table 4 */
+typedef struct acpi_mpam_msc_node
+{
+    UINT16                     Length;
+    UINT8                      InterfaceType;
+    UINT8                      Reserved;
+    UINT32                     Identifier;
+    UINT64                     BaseAddress;
+    UINT32                     MMIOSize;
+    UINT32                     OverflowInterrupt;
+    UINT32                     OverflowInterruptFlags;
+    UINT32                     Reserved1;
+    UINT32                     OverflowInterruptAffinity;
+    UINT32                     ErrorInterrupt;
+    UINT32                     ErrorInterruptFlags;
+    UINT32                     Reserved2;
+    UINT32                     ErrorInterruptAffinity;
+    UINT32                     MaxNrdyUsec;
+    UINT64                     HardwareIdLinkedDevice;
+    UINT32                     InstanceIdLinkedDevice;
+    UINT32                     NumResourceNodes;
+} ACPI_MPAM_MSC_NODE;
+
+typedef struct acpi_table_mpam
+{
+    ACPI_TABLE_HEADER         Header;          /* Common ACPI table header */
+} ACPI_TABLE_MPAM;
 
 /*******************************************************************************
  *
@@ -1524,6 +2323,52 @@ typedef struct acpi_msct_proximity
 } ACPI_MSCT_PROXIMITY;
 
 
+/*******************************************************************************
+ *
+ * MRRM - Memory Range and Region Mapping (MRRM) table
+ * Conforms to "Intel Resource Director Technology Architecture Specification"
+ * Version 1.1, January 2025
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_mrrm
+{
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT8                   MaxMemRegion;       /* Max Memory Regions supported */
+    UINT8                   Flags;              /* Region assignment type */
+    UINT8                   Reserved[26];
+    UINT8                   Memory_Range_Entry[];
+
+} ACPI_TABLE_MRRM;
+
+/* Flags */
+#define ACPI_MRRM_FLAGS_REGION_ASSIGNMENT_OS    (1<<0)
+
+/*******************************************************************************
+    *
+    * Memory Range entry - Memory Range entry in MRRM table
+    *
+    ******************************************************************************/
+
+typedef struct acpi_mrrm_mem_range_entry
+{
+    ACPI_SUBTBL_HDR_16      Header;
+    UINT32                  Reserved0;          /* Reserved */
+    UINT64                  AddrBase;           /* Base addr of the mem range */
+    UINT64                  AddrLen;            /* Length of the mem range */
+    UINT16                  RegionIdFlags;      /* Valid local or remote Region-ID */
+    UINT8                   LocalRegionId;      /* Platform-assigned static local Region-ID */
+    UINT8                   RemoteRegionId;     /* Platform-assigned static remote Region-ID */
+    UINT32                  Reserved1;          /* Reserved */
+    /* Region-ID Programming Registers[] */
+
+} ACPI_MRRM_MEM_RANGE_ENTRY;
+
+/* Values for RegionIdFlags above */
+#define ACPI_MRRM_VALID_REGION_ID_FLAGS_LOCAL   (1<<0)
+#define ACPI_MRRM_VALID_REGION_ID_FLAGS_REMOTE  (1<<1)
+
+
 /*******************************************************************************
  *
  * MSDM - Microsoft Data Management table
@@ -1651,7 +2496,7 @@ typedef struct acpi_nfit_interleave
     UINT16                  Reserved;           /* Reserved, must be zero */
     UINT32                  LineCount;
     UINT32                  LineSize;
-    UINT32                  LineOffset[1];      /* Variable length */
+    UINT32                  LineOffset[];       /* Variable length */
 
 } ACPI_NFIT_INTERLEAVE;
 
@@ -1662,7 +2507,7 @@ typedef struct acpi_nfit_smbios
 {
     ACPI_NFIT_HEADER        Header;
     UINT32                  Reserved;           /* Reserved, must be zero */
-    UINT8                   Data[1];            /* Variable length */
+    UINT8                   Data[];             /* Variable length */
 
 } ACPI_NFIT_SMBIOS;
 
@@ -1728,7 +2573,7 @@ typedef struct acpi_nfit_flush_address
     UINT32                  DeviceHandle;
     UINT16                  HintCount;
     UINT8                   Reserved[6];        /* Reserved, must be zero */
-    UINT64                  HintAddress[1];     /* Variable length */
+    UINT64                  HintAddress[];      /* Variable length */
 
 } ACPI_NFIT_FLUSH_ADDRESS;
 
@@ -1804,332 +2649,211 @@ typedef struct nfit_device_handle
 
 /*******************************************************************************
  *
- * NHLT - Non HD Audio Link Table
- *
- * Conforms to: Intel Smart Sound Technology NHLT Specification
- * Version 0.8.1, January 2020.
+ * NHLT - Non HDAudio Link Table
+ *        Version 1
  *
  ******************************************************************************/
 
-/* Main table */
-
 typedef struct acpi_table_nhlt
 {
-    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
-    UINT8                   EndpointCount;
+    ACPI_TABLE_HEADER              Header;          /* Common ACPI table header */
+    UINT8                          EndpointsCount;
+    /*
+     * ACPI_NHLT_ENDPOINT          Endpoints[];
+     * ACPI_NHLT_CONFIG            OEDConfig;
+     */
 
 } ACPI_TABLE_NHLT;
 
-typedef struct acpi_table_nhlt_endpoint_count
-{
-    UINT8                   EndpointCount;
-
-} ACPI_TABLE_NHLT_ENDPOINT_COUNT;
-
 typedef struct acpi_nhlt_endpoint
 {
-    UINT32                  DescriptorLength;
-    UINT8                   LinkType;
-    UINT8                   InstanceId;
-    UINT16                  VendorId;
-    UINT16                  DeviceId;
-    UINT16                  RevisionId;
-    UINT32                  SubsystemId;
-    UINT8                   DeviceType;
-    UINT8                   Direction;
-    UINT8                   VirtualBusId;
+    UINT32                         Length;
+    UINT8                          LinkType;
+    UINT8                          InstanceId;
+    UINT16                         VendorId;
+    UINT16                         DeviceId;
+    UINT16                         RevisionId;
+    UINT32                         SubsystemId;
+    UINT8                          DeviceType;
+    UINT8                          Direction;
+    UINT8                          VirtualBusId;
+    /*
+     * ACPI_NHLT_CONFIG            DeviceConfig;
+     * ACPI_NHLT_FORMATS_CONFIG    FormatsConfig;
+     * ACPI_NHLT_DEVICES_INFO      DevicesInfo;
+     */
 
 } ACPI_NHLT_ENDPOINT;
 
-/* Types for LinkType field above */
-
-#define ACPI_NHLT_RESERVED_HD_AUDIO         0
-#define ACPI_NHLT_RESERVED_DSP              1
-#define ACPI_NHLT_PDM                       2
-#define ACPI_NHLT_SSP                       3
-#define ACPI_NHLT_RESERVED_SLIMBUS          4
-#define ACPI_NHLT_RESERVED_SOUNDWIRE        5
-#define ACPI_NHLT_TYPE_RESERVED             6 /* 6 and above are reserved */
+/* Values for LinkType field above */
 
-/* All other values above are reserved */
+#define ACPI_NHLT_LINKTYPE_HDA               0
+#define ACPI_NHLT_LINKTYPE_DSP               1
+#define ACPI_NHLT_LINKTYPE_PDM               2
+#define ACPI_NHLT_LINKTYPE_SSP               3
+#define ACPI_NHLT_LINKTYPE_SLIMBUS           4
+#define ACPI_NHLT_LINKTYPE_SDW               5
+#define ACPI_NHLT_LINKTYPE_UAOL              6
 
 /* Values for DeviceId field above */
 
-#define ACPI_NHLT_PDM_DMIC                  0xAE20
-#define ACPI_NHLT_BT_SIDEBAND               0xAE30
-#define ACPI_NHLT_I2S_TDM_CODECS            0xAE23
+#define ACPI_NHLT_DEVICEID_DMIC              0xAE20
+#define ACPI_NHLT_DEVICEID_BT                0xAE30
+#define ACPI_NHLT_DEVICEID_I2S               0xAE34
 
 /* Values for DeviceType field above */
 
-/* SSP Link */
-
-#define ACPI_NHLT_LINK_BT_SIDEBAND          0
-#define ACPI_NHLT_LINK_FM                   1
-#define ACPI_NHLT_LINK_MODEM                2
-/* 3 is reserved */
-#define ACPI_NHLT_LINK_SSP_ANALOG_CODEC     4
-
-/* PDM Link */
-
-#define ACPI_NHLT_PDM_ON_CAVS_1P8           0
-#define ACPI_NHLT_PDM_ON_CAVS_1P5           1
+/* Device types unique to endpoint of LinkType=PDM */
+#define ACPI_NHLT_DEVICETYPE_PDM             0
+#define ACPI_NHLT_DEVICETYPE_PDM_SKL         1
+/* Device types unique to endpoint of LinkType=SSP */
+#define ACPI_NHLT_DEVICETYPE_BT              0
+#define ACPI_NHLT_DEVICETYPE_FM              1
+#define ACPI_NHLT_DEVICETYPE_MODEM           2
+#define ACPI_NHLT_DEVICETYPE_CODEC           4
 
 /* Values for Direction field above */
 
-#define ACPI_NHLT_DIR_RENDER                0
-#define ACPI_NHLT_DIR_CAPTURE               1
-#define ACPI_NHLT_DIR_RENDER_LOOPBACK       2
-#define ACPI_NHLT_DIR_RENDER_FEEDBACK       3
-#define ACPI_NHLT_DIR_RESERVED              4   /* 4 and above are reserved */
-
-/* Capabilities = 2 */
-
-typedef struct acpi_nhlt_device_specific_config
-{
-    UINT32                  CapabilitiesSize;
-    UINT8                   VirtualSlot;
-    UINT8                   ConfigType;
-
-} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG;
-
-/* Capabilities = 3 */
-
-typedef struct acpi_nhlt_device_specific_config_a
-{
-    UINT32                  CapabilitiesSize;
-    UINT8                   VirtualSlot;
-    UINT8                   ConfigType;
-    UINT8                   ArrayType;
-
-} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A;
-
-/* Capabilities = 3 */
-
-typedef struct acpi_nhlt_device_specific_config_d
-{
-    UINT8                   VirtualSlot;
-    UINT8                   ConfigType;
-    UINT8                   ArrayType;
-
-} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D;
-
-/* Values for Config Type above */
-
-#define ACPI_NHLT_CONFIG_TYPE_GENERIC              0x00
-#define ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY            0x01
-#define ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK      0x03
-#define ACPI_NHLT_CONFIG_TYPE_RESERVED             0x04   /* 4 and above are reserved */
-
-/* Capabilities = 0 */
-
-typedef struct acpi_nhlt_device_specific_config_b
-{
-    UINT32                  CapabilitiesSize;
-
-} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B;
-
-/* Capabilities = 1 */
-
-typedef struct acpi_nhlt_device_specific_config_c
-{
-    UINT32                  CapabilitiesSize;
-    UINT8                   VirtualSlot;
-
-} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C;
-
-typedef struct acpi_nhlt_render_device_specific_config
-{
-    UINT32                  CapabilitiesSize;
-    UINT8                   VirtualSlot;
+#define ACPI_NHLT_DIR_RENDER                 0
+#define ACPI_NHLT_DIR_CAPTURE                1
 
-} ACPI_NHLT_RENDER_DEVICE_SPECIFIC_CONFIG;
-
-typedef struct acpi_nhlt_wave_extensible
+typedef struct acpi_nhlt_config
 {
-    UINT16                  FormatTag;
-    UINT16                  ChannelCount;
-    UINT32                  SamplesPerSec;
-    UINT32                  AvgBytesPerSec;
-    UINT16                  BlockAlign;
-    UINT16                  BitsPerSample;
-    UINT16                  ExtraFormatSize;
-    UINT16                  ValidBitsPerSample;
-    UINT32                  ChannelMask;
-    UINT8                   SubFormatGuid[16];
-
-} ACPI_NHLT_WAVE_EXTENSIBLE;
+    UINT32                         CapabilitiesSize;
+    UINT8                          Capabilities[1];
 
-/* Values for ChannelMask above */
+} ACPI_NHLT_CONFIG;
 
-#define ACPI_NHLT_SPKR_FRONT_LEFT             0x1
-#define ACPI_NHLT_SPKR_FRONT_RIGHT            0x2
-#define ACPI_NHLT_SPKR_FRONT_CENTER           0x4
-#define ACPI_NHLT_SPKR_LOW_FREQ               0x8
-#define ACPI_NHLT_SPKR_BACK_LEFT              0x10
-#define ACPI_NHLT_SPKR_BACK_RIGHT             0x20
-#define ACPI_NHLT_SPKR_FRONT_LEFT_OF_CENTER   0x40
-#define ACPI_NHLT_SPKR_FRONT_RIGHT_OF_CENTER  0x80
-#define ACPI_NHLT_SPKR_BACK_CENTER            0x100
-#define ACPI_NHLT_SPKR_SIDE_LEFT              0x200
-#define ACPI_NHLT_SPKR_SIDE_RIGHT             0x400
-#define ACPI_NHLT_SPKR_TOP_CENTER             0x800
-#define ACPI_NHLT_SPKR_TOP_FRONT_LEFT         0x1000
-#define ACPI_NHLT_SPKR_TOP_FRONT_CENTER       0x2000
-#define ACPI_NHLT_SPKR_TOP_FRONT_RIGHT        0x4000
-#define ACPI_NHLT_SPKR_TOP_BACK_LEFT          0x8000
-#define ACPI_NHLT_SPKR_TOP_BACK_CENTER        0x10000
-#define ACPI_NHLT_SPKR_TOP_BACK_RIGHT         0x20000
-
-typedef struct acpi_nhlt_format_config
+typedef struct acpi_nhlt_gendevice_config
 {
-    ACPI_NHLT_WAVE_EXTENSIBLE   Format;
-    UINT32                      CapabilitySize;
-    UINT8                       Capabilities[];
+    UINT8                          VirtualSlot;
+    UINT8                          ConfigType;
 
-} ACPI_NHLT_FORMAT_CONFIG;
+} ACPI_NHLT_GENDEVICE_CONFIG;
 
-typedef struct acpi_nhlt_formats_config
-{
-    UINT8                   FormatsCount;
+/* Values for ConfigType field above */
 
-} ACPI_NHLT_FORMATS_CONFIG;
+#define ACPI_NHLT_CONFIGTYPE_GENERIC         0
+#define ACPI_NHLT_CONFIGTYPE_MICARRAY        1
 
-typedef struct acpi_nhlt_device_specific_hdr
+typedef struct acpi_nhlt_micdevice_config
 {
-    UINT8                   VirtualSlot;
-    UINT8                   ConfigType;
+    UINT8                          VirtualSlot;
+    UINT8                          ConfigType;
+    UINT8                          ArrayType;
 
-} ACPI_NHLT_DEVICE_SPECIFIC_HDR;
+} ACPI_NHLT_MICDEVICE_CONFIG;
 
-/* Types for ConfigType above */
+/* Values for ArrayType field above */
 
-#define ACPI_NHLT_GENERIC                   0
-#define ACPI_NHLT_MIC                       1
-#define ACPI_NHLT_RENDER                    3
-
-typedef struct acpi_nhlt_mic_device_specific_config
-{
-    ACPI_NHLT_DEVICE_SPECIFIC_HDR   DeviceConfig;
-    UINT8                           ArrayTypeExt;
-
-} ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG;
-
-/* Values for ArrayTypeExt above */
-
-#define ACPI_NHLT_ARRAY_TYPE_RESERVED               0x09 // 9 and below are reserved
-#define ACPI_NHLT_SMALL_LINEAR_2ELEMENT             0x0A
-#define ACPI_NHLT_BIG_LINEAR_2ELEMENT               0x0B
-#define ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT    0x0C
-#define ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT           0x0D
-#define ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT   0x0E
-#define ACPI_NHLT_VENDOR_DEFINED                    0x0F
-#define ACPI_NHLT_ARRAY_TYPE_MASK                   0x0F
-#define ACPI_NHLT_ARRAY_TYPE_EXT_MASK               0x10
-
-#define ACPI_NHLT_NO_EXTENSION                      0x0
-#define ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT           (1<<4)
-
-typedef struct acpi_nhlt_vendor_mic_count
-{
-    UINT8                           MicrophoneCount;
-
-} ACPI_NHLT_VENDOR_MIC_COUNT;
+#define ACPI_NHLT_ARRAYTYPE_LINEAR2_SMALL    0xA
+#define ACPI_NHLT_ARRAYTYPE_LINEAR2_BIG      0xB
+#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO1     0xC
+#define ACPI_NHLT_ARRAYTYPE_PLANAR4_LSHAPED  0xD
+#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO2     0xE
+#define ACPI_NHLT_ARRAYTYPE_VENDOR           0xF
 
 typedef struct acpi_nhlt_vendor_mic_config
 {
-    UINT8                   Type;
-    UINT8                   Panel;
-    UINT16                  SpeakerPositionDistance;    // mm
-    UINT16                  HorizontalOffset;           // mm
-    UINT16                  VerticalOffset;             // mm
-    UINT8                   FrequencyLowBand;           // 5*Hz
-    UINT8                   FrequencyHighBand;          // 500*Hz
-    UINT16                  DirectionAngle;             // -180 - + 180
-    UINT16                  ElevationAngle;             // -180 - + 180
-    UINT16                  WorkVerticalAngleBegin;     // -180 - + 180 with 2 deg step
-    UINT16                  WorkVerticalAngleEnd;       // -180 - + 180 with 2 deg step
-    UINT16                  WorkHorizontalAngleBegin;   // -180 - + 180 with 2 deg step
-    UINT16                  WorkHorizontalAngleEnd;     // -180 - + 180 with 2 deg step
+    UINT8                          Type;
+    UINT8                          Panel;
+    UINT16                         SpeakerPositionDistance;   /* mm */
+    UINT16                         HorizontalOffset;          /* mm */
+    UINT16                         VerticalOffset;            /* mm */
+    UINT8                          FrequencyLowBand;          /* 5*Hz */
+    UINT8                          FrequencyHighBand;         /* 500*Hz */
+    UINT16                         DirectionAngle;            /* -180 - +180 */
+    UINT16                         ElevationAngle;            /* -180 - +180 */
+    UINT16                         WorkVerticalAngleBegin;    /* -180 - +180 with 2 deg step */
+    UINT16                         WorkVerticalAngleEnd;      /* -180 - +180 with 2 deg step */
+    UINT16                         WorkHorizontalAngleBegin;  /* -180 - +180 with 2 deg step */
+    UINT16                         WorkHorizontalAngleEnd;    /* -180 - +180 with 2 deg step */
 
 } ACPI_NHLT_VENDOR_MIC_CONFIG;
 
 /* Values for Type field above */
 
-#define ACPI_NHLT_MIC_OMNIDIRECTIONAL       0
-#define ACPI_NHLT_MIC_SUBCARDIOID           1
-#define ACPI_NHLT_MIC_CARDIOID              2
-#define ACPI_NHLT_MIC_SUPER_CARDIOID        3
-#define ACPI_NHLT_MIC_HYPER_CARDIOID        4
-#define ACPI_NHLT_MIC_8_SHAPED              5
-#define ACPI_NHLT_MIC_RESERVED6             6 // 6 is reserved
-#define ACPI_NHLT_MIC_VENDOR_DEFINED        7
-#define ACPI_NHLT_MIC_RESERVED              8 // 8 and above are reserved
+#define ACPI_NHLT_MICTYPE_OMNIDIRECTIONAL    0
+#define ACPI_NHLT_MICTYPE_SUBCARDIOID        1
+#define ACPI_NHLT_MICTYPE_CARDIOID           2
+#define ACPI_NHLT_MICTYPE_SUPERCARDIOID      3
+#define ACPI_NHLT_MICTYPE_HYPERCARDIOID      4
+#define ACPI_NHLT_MICTYPE_8SHAPED            5
+#define ACPI_NHLT_MICTYPE_RESERVED           6
+#define ACPI_NHLT_MICTYPE_VENDORDEFINED      7
 
 /* Values for Panel field above */
 
-#define ACPI_NHLT_MIC_POSITION_TOP          0
-#define ACPI_NHLT_MIC_POSITION_BOTTOM       1
-#define ACPI_NHLT_MIC_POSITION_LEFT         2
-#define ACPI_NHLT_MIC_POSITION_RIGHT        3
-#define ACPI_NHLT_MIC_POSITION_FRONT        4
-#define ACPI_NHLT_MIC_POSITION_BACK         5
-#define ACPI_NHLT_MIC_POSITION_RESERVED     6 // 6 and above are reserved
+#define ACPI_NHLT_MICLOCATION_TOP             0
+#define ACPI_NHLT_MICLOCATION_BOTTOM          1
+#define ACPI_NHLT_MICLOCATION_LEFT            2
+#define ACPI_NHLT_MICLOCATION_RIGHT           3
+#define ACPI_NHLT_MICLOCATION_FRONT           4
+#define ACPI_NHLT_MICLOCATION_REAR            5
 
-typedef struct acpi_nhlt_vendor_mic_device_specific_config
+typedef struct acpi_nhlt_vendor_micdevice_config
 {
-    ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG    MicArrayDeviceConfig;
-    UINT8                                   NumberOfMicrophones;
-    ACPI_NHLT_VENDOR_MIC_CONFIG             MicConfig[];            // Indexed by NumberOfMicrophones
+    UINT8                          VirtualSlot;
+    UINT8                          ConfigType;
+    UINT8                          ArrayType;
+    UINT8                          MicsCount;
+    ACPI_NHLT_VENDOR_MIC_CONFIG    Mics[];
 
-} ACPI_NHLT_VENDOR_MIC_DEVICE_SPECIFIC_CONFIG;
+} ACPI_NHLT_VENDOR_MICDEVICE_CONFIG;
 
-/* Microphone SNR and Sensitivity extension */
-
-typedef struct acpi_nhlt_mic_snr_sensitivity_extension
+typedef union acpi_nhlt_device_config
 {
-    UINT32                  SNR;
-    UINT32                  Sensitivity;
-
-} ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION;
+    UINT8                                VirtualSlot;
+    ACPI_NHLT_GENDEVICE_CONFIG           Gen;
+    ACPI_NHLT_MICDEVICE_CONFIG           Mic;
+    ACPI_NHLT_VENDOR_MICDEVICE_CONFIG    VendorMic;
 
-/* Render device with feedback */
+} ACPI_NHLT_DEVICE_CONFIG;
 
-typedef struct acpi_nhlt_render_feedback_device_specific_config
+/* Inherited from Microsoft's WAVEFORMATEXTENSIBLE. */
+typedef struct acpi_nhlt_wave_formatext
 {
-    UINT8                               FeedbackVirtualSlot;    // Render slot in case of capture
-    UINT16                              FeedbackChannels;       // Informative only
-    UINT16                              FeedbackValidBitsPerSample;
+    UINT16                         FormatTag;
+    UINT16                         ChannelCount;
+    UINT32                         SamplesPerSec;
+    UINT32                         AvgBytesPerSec;
+    UINT16                         BlockAlign;
+    UINT16                         BitsPerSample;
+    UINT16                         ExtraFormatSize;
+    UINT16                         ValidBitsPerSample;
+    UINT32                         ChannelMask;
+    UINT8                          Subformat[16];
 
-} ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG;
+} ACPI_NHLT_WAVE_FORMATEXT;
 
-/* Linux-specific structures */
-
-typedef struct acpi_nhlt_linux_specific_count
+typedef struct acpi_nhlt_format_config
 {
-    UINT8                               StructureCount;
+    ACPI_NHLT_WAVE_FORMATEXT       Format;
+    ACPI_NHLT_CONFIG               Config;
 
-} ACPI_NHLT_LINUX_SPECIFIC_COUNT;
+} ACPI_NHLT_FORMAT_CONFIG;
 
-typedef struct acpi_nhlt_linux_specific_data
+typedef struct acpi_nhlt_formats_config
 {
-    UINT8                               DeviceId[16];
-    UINT8                               DeviceInstanceId;
-    UINT8                               DevicePortId;
+    UINT8                          FormatsCount;
+    ACPI_NHLT_FORMAT_CONFIG        Formats[];
 
-} ACPI_NHLT_LINUX_SPECIFIC_DATA;
+} ACPI_NHLT_FORMATS_CONFIG;
 
-typedef struct acpi_nhlt_linux_specific_data_b
+typedef struct acpi_nhlt_device_info
 {
-    UINT8                               SpecificData[18];
+    UINT8                          Id[16];
+    UINT8                          InstanceId;
+    UINT8                          PortId;
 
-} ACPI_NHLT_LINUX_SPECIFIC_DATA_B;
+} ACPI_NHLT_DEVICE_INFO;
 
-typedef struct acpi_nhlt_table_terminator
+typedef struct acpi_nhlt_devices_info
 {
-    UINT32                  TerminatorValue;
-    UINT32                  TerminatorSignature;
+    UINT8                          DevicesCount;
+    ACPI_NHLT_DEVICE_INFO          Devices[];
 
-} ACPI_NHLT_TABLE_TERMINATOR;
+} ACPI_NHLT_DEVICES_INFO;
 
 
 /*******************************************************************************
@@ -2707,8 +3431,8 @@ typedef struct acpi_table_prmt_header
 
 typedef struct acpi_prmt_module_header
 {
-	UINT16                  Revision;
-	UINT16                  Length;
+    UINT16                  Revision;
+    UINT16                  Length;
 
 } ACPI_PRMT_MODULE_HEADER;
 
@@ -2846,6 +3570,148 @@ enum AcpiRasfStatus
 #define ACPI_RASF_STATUS                (0x1F<<3)
 
 
+/*******************************************************************************
+ *
+ * RAS2 - RAS2 Feature Table (ACPI 6.5)
+ *        Version 1
+ *
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_ras2 {
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT16                  Reserved;
+    UINT16                  NumPccDescs;
+
+} ACPI_TABLE_RAS2;
+
+/* RAS2 Platform Communication Channel Descriptor */
+
+typedef struct acpi_ras2_pcc_desc {
+    UINT8                   ChannelId;
+    UINT16                  Reserved;
+    UINT8                   FeatureType;
+    UINT32                  Instance;
+
+} ACPI_RAS2_PCC_DESC;
+
+/* RAS2 Platform Communication Channel Shared Memory Region */
+
+typedef struct acpi_ras2_shmem {
+    UINT32                  Signature;
+    UINT16                  Command;
+    UINT16                  Status;
+    UINT16                  Version;
+    UINT8                   Features[16];
+    UINT8                   SetCaps[16];
+    UINT16                  NumParamBlks;
+    UINT32                  SetCapsStatus;
+
+} ACPI_RAS2_SHMEM;
+
+/* RAS2 Parameter Block Structure for PATROL_SCRUB */
+
+typedef struct acpi_ras2_parameter_block
+{
+    UINT16                  Type;
+    UINT16                  Version;
+    UINT16                  Length;
+
+} ACPI_RAS2_PARAMETER_BLOCK;
+
+/* RAS2 Parameter Block Structure for PATROL_SCRUB */
+
+typedef struct acpi_ras2_patrol_scrub_param {
+    ACPI_RAS2_PARAMETER_BLOCK   Header;
+    UINT16                      Command;
+    UINT64                      ReqAddrRange[2];
+    UINT64                      ActlAddrRange[2];
+    UINT32                      Flags;
+    UINT32                      ScrubParamsOut;
+    UINT32                      ScrubParamsIn;
+
+} ACPI_RAS2_PATROL_SCRUB_PARAM;
+
+/* Masks for Flags field above */
+
+#define ACPI_RAS2_SCRUBBER_RUNNING      1
+
+/* RAS2 Parameter Block Structure for LA2PA_TRANSLATION */
+
+typedef struct acpi_ras2_la2pa_translation_parameter {
+    ACPI_RAS2_PARAMETER_BLOCK   Header;
+    UINT16                      AddrTranslationCommand;
+    UINT64                      SubInstId;
+    UINT64                      LogicalAddress;
+    UINT64                      PhysicalAddress;
+    UINT32                      Status;
+
+} ACPI_RAS2_LA2PA_TRANSLATION_PARAM;
+
+/* Channel Commands */
+
+enum AcpiRas2Commands
+{
+    ACPI_RAS2_EXECUTE_RAS2_COMMAND      = 1
+};
+
+/* Platform RAS2 Features */
+
+enum AcpiRas2Features
+{
+    ACPI_RAS2_PATROL_SCRUB_SUPPORTED    = 0,
+    ACPI_RAS2_LA2PA_TRANSLATION         = 1
+};
+
+/* RAS2 Patrol Scrub Commands */
+
+enum AcpiRas2PatrolScrubCommands
+{
+    ACPI_RAS2_GET_PATROL_PARAMETERS     = 1,
+    ACPI_RAS2_START_PATROL_SCRUBBER     = 2,
+    ACPI_RAS2_STOP_PATROL_SCRUBBER      = 3
+};
+
+/* RAS2 LA2PA Translation Commands */
+
+enum AcpiRas2La2PaTranslationCommands
+{
+    ACPI_RAS2_GET_LA2PA_TRANSLATION     = 1,
+};
+
+/* RAS2 LA2PA Translation Status values */
+
+enum AcpiRas2La2PaTranslationStatus
+{
+    ACPI_RAS2_LA2PA_TRANSLATION_SUCCESS = 0,
+    ACPI_RAS2_LA2PA_TRANSLATION_FAIL    = 1,
+};
+
+/* Channel Command flags */
+
+#define ACPI_RAS2_GENERATE_SCI          (1<<15)
+
+/* Status values */
+
+enum AcpiRas2Status
+{
+    ACPI_RAS2_SUCCESS                   = 0,
+    ACPI_RAS2_NOT_VALID                 = 1,
+    ACPI_RAS2_NOT_SUPPORTED             = 2,
+    ACPI_RAS2_BUSY                      = 3,
+    ACPI_RAS2_FAILED                    = 4,
+    ACPI_RAS2_ABORTED                   = 5,
+    ACPI_RAS2_INVALID_DATA              = 6
+};
+
+/* Status flags */
+
+#define ACPI_RAS2_COMMAND_COMPLETE      (1)
+#define ACPI_RAS2_SCI_DOORBELL          (1<<1)
+#define ACPI_RAS2_ERROR                 (1<<2)
+#define ACPI_RAS2_STATUS                (0x1F<<3)
+
+
 /*******************************************************************************
  *
  * RGRT - Regulatory Graphics Resource Table
@@ -2862,7 +3728,7 @@ typedef struct acpi_table_rgrt
     UINT16                  Version;
     UINT8                   ImageType;
     UINT8                   Reserved;
-    UINT8                   Image[0];
+    UINT8                   Image[];
 
 } ACPI_TABLE_RGRT;
 
@@ -2876,6 +3742,160 @@ enum AcpiRgrtImageType
 };
 
 
+/*******************************************************************************
+ *
+ * RHCT - RISC-V Hart Capabilities Table
+ *        Version 1
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_rhct {
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT32                  Flags;              /* RHCT flags */
+    UINT64                  TimeBaseFreq;
+    UINT32                  NodeCount;
+    UINT32                  NodeOffset;
+} ACPI_TABLE_RHCT;
+
+/* RHCT Flags */
+
+#define ACPI_RHCT_TIMER_CANNOT_WAKEUP_CPU       (1)
+/*
+ * RHCT subtables
+ */
+typedef struct acpi_rhct_node_header {
+    UINT16                  Type;
+    UINT16                  Length;
+    UINT16                  Revision;
+} ACPI_RHCT_NODE_HEADER;
+
+/* Values for RHCT subtable Type above */
+
+enum acpi_rhct_node_type {
+    ACPI_RHCT_NODE_TYPE_ISA_STRING = 0x0000,
+    ACPI_RHCT_NODE_TYPE_CMO        = 0x0001,
+    ACPI_RHCT_NODE_TYPE_MMU        = 0x0002,
+    ACPI_RHCT_NODE_TYPE_RESERVED   = 0x0003,
+    ACPI_RHCT_NODE_TYPE_HART_INFO  = 0xFFFF,
+};
+
+/*
+ * RHCT node specific subtables
+ */
+
+/* ISA string node structure */
+typedef struct acpi_rhct_isa_string {
+    UINT16                  IsaLength;
+    char                    Isa[];
+} ACPI_RHCT_ISA_STRING;
+
+typedef struct acpi_rhct_cmo_node {
+    UINT8                  Reserved;           /* Must be zero */
+    UINT8                  CbomSize;           /* CBOM size in powerof 2 */
+    UINT8                  CbopSize;           /* CBOP size in powerof 2 */
+    UINT8                  CbozSize;           /* CBOZ size in powerof 2 */
+} ACPI_RHCT_CMO_NODE;
+
+typedef struct acpi_rhct_mmu_node {
+    UINT8                   Reserved;          /* Must be zero */
+    UINT8                   MmuType;           /* Virtual Address Scheme */
+} ACPI_RHCT_MMU_NODE;
+
+enum acpi_rhct_mmu_type {
+    ACPI_RHCT_MMU_TYPE_SV39 = 0,
+    ACPI_RHCT_MMU_TYPE_SV48 = 1,
+    ACPI_RHCT_MMU_TYPE_SV57 = 2
+};
+
+/* Hart Info node structure */
+typedef struct acpi_rhct_hart_info {
+    UINT16                  NumOffsets;
+    UINT32                  Uid;                /* ACPI processor UID */
+} ACPI_RHCT_HART_INFO;
+
+/*******************************************************************************
+ *
+ * RIMT - RISC-V IO Remapping Table
+ *
+ * https://github.com/riscv-non-isa/riscv-acpi-rimt
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_rimt {
+    ACPI_TABLE_HEADER Header;              /* Common ACPI table header */
+    UINT32            NumNodes;            /* Number of RIMT Nodes */
+    UINT32            NodeOffset;          /* Offset to RIMT Node Array */
+    UINT32            Reserved;
+} ACPI_TABLE_RIMT;
+
+typedef struct acpi_rimt_node {
+    UINT8             Type;
+    UINT8             Revision;
+    UINT16            Length;
+    UINT16            Reserved;
+    UINT16            Id;
+    char              NodeData[];
+} ACPI_RIMT_NODE;
+
+enum acpi_rimt_node_type {
+    ACPI_RIMT_NODE_TYPE_IOMMU             = 0x0,
+    ACPI_RIMT_NODE_TYPE_PCIE_ROOT_COMPLEX = 0x1,
+    ACPI_RIMT_NODE_TYPE_PLAT_DEVICE       = 0x2,
+};
+
+typedef struct acpi_rimt_iommu {
+    UINT8             HardwareId[8];       /* Hardware ID */
+    UINT64            BaseAddress;         /* Base Address */
+    UINT32            Flags;               /* Flags */
+    UINT32            ProximityDomain;     /* Proximity Domain */
+    UINT16            PcieSegmentNumber;   /* PCIe Segment number */
+    UINT16            PcieBdf;             /* PCIe B/D/F */
+    UINT16            NumInterruptWires;   /* Number of interrupt wires */
+    UINT16            InterruptWireOffset; /* Interrupt wire array offset */
+    UINT64            InterruptWire[];     /* Interrupt wire array */
+} ACPI_RIMT_IOMMU;
+
+/* IOMMU Node Flags */
+#define ACPI_RIMT_IOMMU_FLAGS_PCIE      (1)
+#define ACPI_RIMT_IOMMU_FLAGS_PXM_VALID (1 << 1)
+
+/* Interrupt Wire Structure */
+typedef struct acpi_rimt_iommu_wire_gsi {
+    UINT32             IrqNum;             /* Interrupt Number */
+    UINT32             Flags;              /* Flags */
+} ACPI_RIMT_IOMMU_WIRE_GSI;
+
+/* Interrupt Wire Flags */
+#define ACPI_RIMT_GSI_LEVEL_TRIGGERRED  (1)
+#define ACPI_RIMT_GSI_ACTIVE_HIGH       (1 << 1)
+
+typedef struct acpi_rimt_id_mapping {
+    UINT32              SourceIdBase;      /* Source ID Base */
+    UINT32              NumIds;            /* Number of IDs */
+    UINT32              DestIdBase;        /* Destination Device ID Base */
+    UINT32              DestOffset;        /* Destination IOMMU Offset */
+    UINT32              Flags;             /* Flags */
+} ACPI_RIMT_ID_MAPPING;
+
+typedef struct acpi_rimt_pcie_rc {
+    UINT32              Flags;             /* Flags */
+    UINT16              Reserved;          /* Reserved */
+    UINT16              PcieSegmentNumber; /* PCIe Segment number */
+    UINT16              IdMappingOffset;   /* ID mapping array offset */
+    UINT16              NumIdMappings;     /* Number of ID mappings */
+} ACPI_RIMT_PCIE_RC;
+
+/* PCIe Root Complex Node Flags */
+#define ACPI_RIMT_PCIE_ATS_SUPPORTED   (1)
+#define ACPI_RIMT_PCIE_PRI_SUPPORTED   (1 << 1)
+
+typedef struct acpi_rimt_platform_device {
+    UINT16              IdMappingOffset;   /* ID Mapping array offset */
+    UINT16              NumIdMappings;     /* Number of ID mappings */
+    char                DeviceName[];      /* Device Object Name */
+} ACPI_RIMT_PLATFORM_DEVICE;
+
+
 /*******************************************************************************
  *
  * SBST - Smart Battery Specification Table
@@ -3075,6 +4095,30 @@ enum acpi_svkl_format
     ACPI_SVKL_FORMAT_RESERVED   = 1 /* 1 and greater are reserved */
 };
 
+/*******************************************************************************
+ *
+ * SWFT - SoundWire File Table
+ *        as described in Discovery and Configuration (DisCo) Specification
+ *        for SoundWire®
+ *        Version 1
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_swft
+{
+    ACPI_TABLE_HEADER       Header; /* Common ACPI table header */
+
+} ACPI_TABLE_SWFT;
+
+typedef struct acpi_swft_file
+{
+    UINT16                  VendorID;
+    UINT32                  FileID;
+    UINT16                  FileVersion;
+    UINT16                  FileLength;
+    UINT8                   FileData[];
+
+} ACPI_SWFT_FILE;
 
 /*******************************************************************************
  *
diff --git a/sys/contrib/dev/acpica/source/include/actbl3.h b/sys/contrib/dev/acpica/source/include/actbl3.h
index 40cf71306a..07bc8713be 100644
--- a/sys/contrib/dev/acpica/source/include/actbl3.h
+++ b/sys/contrib/dev/acpica/source/include/actbl3.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -243,10 +243,10 @@ typedef struct acpi_table_slit
 /*******************************************************************************
  *
  * SPCR - Serial Port Console Redirection table
- *        Version 2
+ *        Version 4
  *
  * Conforms to "Serial Port Console Redirection Table",
- * Version 1.03, August 10, 2015
+ * Version 1.10, Jan 5, 2023
  *
  ******************************************************************************/
 
@@ -264,7 +264,7 @@ typedef struct acpi_table_spcr
     UINT8                   StopBits;
     UINT8                   FlowControl;
     UINT8                   TerminalType;
-    UINT8                   Reserved1;
+    UINT8                   Language;
     UINT16                  PciDeviceId;
     UINT16                  PciVendorId;
     UINT8                   PciBus;
@@ -272,7 +272,11 @@ typedef struct acpi_table_spcr
     UINT8                   PciFunction;
     UINT32                  PciFlags;
     UINT8                   PciSegment;
-    UINT32                  Reserved2;
+    UINT32                  UartClkFreq;
+    UINT32                  PreciseBaudrate;
+    UINT16                  NameSpaceStringLength;
+    UINT16                  NameSpaceStringOffset;
+    char                    NameSpaceString[];
 
 } ACPI_TABLE_SPCR;
 
@@ -353,7 +357,8 @@ enum AcpiSratType
     ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4, /* ACPI 6.2 */
     ACPI_SRAT_TYPE_GENERIC_AFFINITY     = 5, /* ACPI 6.3 */
     ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
-    ACPI_SRAT_TYPE_RESERVED              = 7  /* 7 and greater are reserved */
+    ACPI_SRAT_TYPE_RINTC_AFFINITY        = 7, /* ACPI 6.6 */
+    ACPI_SRAT_TYPE_RESERVED              = 8  /* 8 and greater are reserved */
 };
 
 /*
@@ -437,7 +442,7 @@ typedef struct acpi_srat_gicc_affinity
 #define ACPI_SRAT_GICC_ENABLED     (1)         /* 00: Use affinity structure */
 
 
-/* 4: GCC ITS Affinity (ACPI 6.2) */
+/* 4: GIC ITS Affinity (ACPI 6.2) */
 
 typedef struct acpi_srat_gic_its_affinity
 {
@@ -454,13 +459,15 @@ typedef struct acpi_srat_gic_its_affinity
  * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY
  */
 
+#define ACPI_SRAT_DEVICE_HANDLE_SIZE	16
+
 typedef struct acpi_srat_generic_affinity
 {
     ACPI_SUBTABLE_HEADER    Header;
     UINT8                   Reserved;
     UINT8                   DeviceHandleType;
     UINT32                  ProximityDomain;
-    UINT8                   DeviceHandle[16];
+    UINT8                   DeviceHandle[ACPI_SRAT_DEVICE_HANDLE_SIZE];
     UINT32                  Flags;
     UINT32                  Reserved1;
 
@@ -471,6 +478,23 @@ typedef struct acpi_srat_generic_affinity
 #define ACPI_SRAT_GENERIC_AFFINITY_ENABLED     (1)      /* 00: Use affinity structure */
 #define ACPI_SRAT_ARCHITECTURAL_TRANSACTIONS   (1<<1)   /* ACPI 6.4 */
 
+/* 7: RINTC Affinity Structure(ACPI 6.6) */
+
+typedef struct acpi_srat_rintc_affinity
+{
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT16                  Reserved;
+    UINT32                  ProximityDomain;
+    UINT32                  AcpiProcessorUid;
+    UINT32                  Flags;
+    UINT32                  ClockDomain;
+
+} ACPI_SRAT_RINTC_AFFINITY;
+
+/* Flags for ACPI_SRAT_RINTC_AFFINITY */
+
+#define ACPI_SRAT_RINTC_ENABLED     (1)         /* 00: Use affinity structure */
+
 /*******************************************************************************
  *
  * STAO - Status Override Table (_STA override) - ACPI 6.0
@@ -631,6 +655,8 @@ typedef struct acpi_table_tpm2
 #define ACPI_TPM2_RESERVED10                        10
 #define ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC       11  /* V1.2 Rev 8 */
 #define ACPI_TPM2_RESERVED                          12
+#define ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON        13
+#define ACPI_TPM2_CRB_WITH_ARM_FFA                  15
 
 
 /* Optional trailer appears after any StartMethod subtables */
diff --git a/sys/contrib/dev/acpica/source/include/actypes.h b/sys/contrib/dev/acpica/source/include/actypes.h
index 6805b48ffb..3c95887b16 100644
--- a/sys/contrib/dev/acpica/source/include/actypes.h
+++ b/sys/contrib/dev/acpica/source/include/actypes.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -658,8 +658,12 @@ typedef UINT64                          ACPI_INTEGER;
 /* Pointer/Integer type conversions */
 
 #define ACPI_TO_POINTER(i)              ACPI_CAST_PTR (void, (ACPI_SIZE) (i))
+#ifndef ACPI_TO_INTEGER
 #define ACPI_TO_INTEGER(p)              ACPI_PTR_DIFF (p, (void *) 0)
+#endif
+#ifndef ACPI_OFFSET
 #define ACPI_OFFSET(d, f)               ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0)
+#endif
 #define ACPI_PTR_TO_PHYSADDR(i)         ACPI_TO_INTEGER(i)
 
 /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */
@@ -669,12 +673,12 @@ typedef UINT64                          ACPI_INTEGER;
 #define ACPI_COPY_NAMESEG(dest,src)     (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src)))
 #else
 #define ACPI_COMPARE_NAMESEG(a,b)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE))
-#define ACPI_COPY_NAMESEG(dest,src)     (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
+#define ACPI_COPY_NAMESEG(dest,src)     (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
 #endif
 
 /* Support for the special RSDP signature (8 characters) */
 
-#define ACPI_VALIDATE_RSDP_SIG(a)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
+#define ACPI_VALIDATE_RSDP_SIG(a)       (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, (sizeof(a) < 8) ? ACPI_NAMESEG_SIZE : 8))
 #define ACPI_MAKE_RSDP_SIG(dest)        (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
 
 /* Support for OEMx signature (x can be any character) */
@@ -686,14 +690,14 @@ typedef UINT64                          ACPI_INTEGER;
  * Can be used with AccessSize field of ACPI_GENERIC_ADDRESS and
  * ACPI_RESOURCE_GENERIC_REGISTER.
  */
-#define ACPI_ACCESS_BIT_SHIFT		2
-#define ACPI_ACCESS_BYTE_SHIFT		-1
-#define ACPI_ACCESS_BIT_MAX		(31 - ACPI_ACCESS_BIT_SHIFT)
-#define ACPI_ACCESS_BYTE_MAX		(31 - ACPI_ACCESS_BYTE_SHIFT)
-#define ACPI_ACCESS_BIT_DEFAULT		(8 - ACPI_ACCESS_BIT_SHIFT)
-#define ACPI_ACCESS_BYTE_DEFAULT	(8 - ACPI_ACCESS_BYTE_SHIFT)
-#define ACPI_ACCESS_BIT_WIDTH(size)	(1 << ((size) + ACPI_ACCESS_BIT_SHIFT))
-#define ACPI_ACCESS_BYTE_WIDTH(size)	(1 << ((size) + ACPI_ACCESS_BYTE_SHIFT))
+#define ACPI_ACCESS_BIT_SHIFT           2
+#define ACPI_ACCESS_BYTE_SHIFT          -1
+#define ACPI_ACCESS_BIT_MAX             (31 - ACPI_ACCESS_BIT_SHIFT)
+#define ACPI_ACCESS_BYTE_MAX            (31 - ACPI_ACCESS_BYTE_SHIFT)
+#define ACPI_ACCESS_BIT_DEFAULT         (8 - ACPI_ACCESS_BIT_SHIFT)
+#define ACPI_ACCESS_BYTE_DEFAULT        (8 - ACPI_ACCESS_BYTE_SHIFT)
+#define ACPI_ACCESS_BIT_WIDTH(size)     (1 << ((size) + ACPI_ACCESS_BIT_SHIFT))
+#define ACPI_ACCESS_BYTE_WIDTH(size)    (1 << ((size) + ACPI_ACCESS_BYTE_SHIFT))
 
 /*******************************************************************************
  *
@@ -737,9 +741,11 @@ typedef UINT64                          ACPI_INTEGER;
 #define ACPI_STATE_D0                   (UINT8) 0
 #define ACPI_STATE_D1                   (UINT8) 1
 #define ACPI_STATE_D2                   (UINT8) 2
-#define ACPI_STATE_D3                   (UINT8) 3
-#define ACPI_D_STATES_MAX               ACPI_STATE_D3
-#define ACPI_D_STATE_COUNT              4
+#define ACPI_STATE_D3_HOT               (UINT8) 3
+#define ACPI_STATE_D3_COLD              (UINT8) 4
+#define ACPI_STATE_D3                   ACPI_STATE_D3_COLD
+#define ACPI_D_STATES_MAX               ACPI_STATE_D3_COLD
+#define ACPI_D_STATE_COUNT              5
 
 #define ACPI_STATE_C0                   (UINT8) 0
 #define ACPI_STATE_C1                   (UINT8) 1
@@ -1331,6 +1337,12 @@ typedef struct acpi_pcc_info {
     UINT8                           *InternalBuffer;
 } ACPI_PCC_INFO;
 
+/* Special Context data for FFH Opregion (ACPI 6.5) */
+
+typedef struct acpi_ffh_info {
+    UINT64                          Offset;
+    UINT64                          Length;
+} ACPI_FFH_INFO;
 
 typedef
 ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) (
@@ -1470,7 +1482,7 @@ typedef struct acpi_mem_space_context
 
 } ACPI_MEM_SPACE_CONTEXT;
 
-typedef struct acpi_data_table_space_context
+typedef struct acpi_data_table_mapping
 {
     void                            *Pointer;
 
@@ -1550,6 +1562,8 @@ typedef enum
 #define ACPI_OSI_WIN_10_RS5             0x13
 #define ACPI_OSI_WIN_10_19H1            0x14
 #define ACPI_OSI_WIN_10_20H1            0x15
+#define ACPI_OSI_WIN_11                 0x16
+#define ACPI_OSI_WIN_11_22H2            0x17
 
 
 /* Definitions of getopt */
@@ -1562,4 +1576,12 @@ typedef enum
 #define ACPI_FALLTHROUGH do {} while(0)
 #endif
 
+#ifndef ACPI_FLEX_ARRAY
+#define ACPI_FLEX_ARRAY(TYPE, NAME)     TYPE NAME[0]
+#endif
+
+#ifndef ACPI_NONSTRING
+#define ACPI_NONSTRING	/* No terminating NUL character */
+#endif
+
 #endif /* __ACTYPES_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/acutils.h b/sys/contrib/dev/acpica/source/include/acutils.h
index a12e9e1a88..ce6f95101a 100644
--- a/sys/contrib/dev/acpica/source/include/acutils.h
+++ b/sys/contrib/dev/acpica/source/include/acutils.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -196,6 +196,8 @@ extern const char                       *AcpiGbl_SbDecode[];
 extern const char                       *AcpiGbl_FcDecode[];
 extern const char                       *AcpiGbl_PtDecode[];
 extern const char                       *AcpiGbl_PtypDecode[];
+extern const char                       *AcpiGbl_ClockInputMode[];
+extern const char                       *AcpiGbl_ClockInputScale[];
 #endif
 
 /*
@@ -317,6 +319,31 @@ AcpiUtCheckAndRepairAscii (
     UINT32                  Count);
 
 
+/*
+ * utcksum - Checksum utilities
+ */
+UINT8
+AcpiUtGenerateChecksum (
+    void                    *Table,
+    UINT32                  Length,
+    UINT8                   OriginalChecksum);
+
+UINT8
+AcpiUtChecksum (
+    UINT8                   *Buffer,
+    UINT32                  Length);
+
+ACPI_STATUS
+AcpiUtVerifyCdatChecksum (
+    ACPI_TABLE_CDAT         *CdatTable,
+    UINT32                  Length);
+
+ACPI_STATUS
+AcpiUtVerifyChecksum (
+    ACPI_TABLE_HEADER       *Table,
+    UINT32                  Length);
+
+
 /*
  * utnonansi - Non-ANSI C library functions
  */
diff --git a/sys/contrib/dev/acpica/source/include/acuuid.h b/sys/contrib/dev/acpica/source/include/acuuid.h
index 48f4c9a1c3..071e9a5ad6 100644
--- a/sys/contrib/dev/acpica/source/include/acuuid.h
+++ b/sys/contrib/dev/acpica/source/include/acuuid.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -211,5 +211,6 @@
 #define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
 #define UUID_CORESIGHT_GRAPH            "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"
 #define UUID_USB4_CAPABILITIES          "23a0d13a-26ab-486c-9c5f-0ffa525a575a"
-
+#define UUID_1ST_FUNCTION_ID            "893f00a6-660c-494e-bcfd-3043f4fb67c0"
+#define UUID_2ND_FUNCTION_ID            "107ededd-d381-4fd7-8da9-08e9a6c79644"
 #endif /* __ACUUID_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/amlcode.h b/sys/contrib/dev/acpica/source/include/amlcode.h
index f7ad22a181..6bb5919047 100644
--- a/sys/contrib/dev/acpica/source/include/amlcode.h
+++ b/sys/contrib/dev/acpica/source/include/amlcode.h
@@ -10,7 +10,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/amlresrc.h b/sys/contrib/dev/acpica/source/include/amlresrc.h
index a97a1c6325..4482ed378a 100644
--- a/sys/contrib/dev/acpica/source/include/amlresrc.h
+++ b/sys/contrib/dev/acpica/source/include/amlresrc.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -213,6 +213,8 @@
 #define ACPI_RESTAG_TYPE                        "_TTP"  /* Translation(1), Static (0) */
 #define ACPI_RESTAG_XFERTYPE                    "_SIZ"  /* 8(0), 8And16(1), 16(2) */
 #define ACPI_RESTAG_VENDORDATA                  "_VEN"
+#define ACPI_RESTAG_FQN                         "_FQN"
+#define ACPI_RESTAG_FQD                         "_FQD"
 
 
 /* Default sizes for "small" resource descriptors */
@@ -501,7 +503,10 @@ typedef struct aml_resource_extended_irq
     AML_RESOURCE_LARGE_HEADER_COMMON
     UINT8                           Flags;
     UINT8                           InterruptCount;
-    UINT32                          Interrupts[1];
+    union {
+        UINT32                      Interrupt;
+        ACPI_FLEX_ARRAY(UINT32,     Interrupts);
+    };
     /* ResSourceIndex, ResSource optional fields follow */
 
 } AML_RESOURCE_EXTENDED_IRQ;
@@ -703,6 +708,23 @@ typedef struct aml_resource_pin_config
 
 } AML_RESOURCE_PIN_CONFIG;
 
+#define AML_RESOURCE_CLOCK_INPUT_REVISION      1       /* ACPI 6.5 */
+
+typedef struct aml_resource_clock_input
+{
+    AML_RESOURCE_LARGE_HEADER_COMMON
+    UINT8                           RevisionId;
+    UINT16                          Flags;
+    UINT16                          FrequencyDivisor;
+    UINT32                          FrequencyNumerator;
+    /*
+     * Optional fields follow immediately:
+     * 1) Resource Source index
+     * 2) Resource Source String
+     */
+} AML_RESOURCE_CLOCK_INPUT;
+
+
 #define AML_RESOURCE_PIN_CONFIG_REVISION      1       /* ACPI 6.2 */
 
 typedef struct aml_resource_pin_group
@@ -770,10 +792,6 @@ typedef struct aml_resource_pin_group_config
 
 #define AML_RESOURCE_PIN_GROUP_CONFIG_REVISION    1       /* ACPI 6.2 */
 
-/* restore default alignment */
-
-#pragma pack()
-
 /* Union of all resource descriptors, so we can allocate the worst case */
 
 typedef union aml_resource
@@ -819,6 +837,7 @@ typedef union aml_resource
     AML_RESOURCE_PIN_GROUP                  PinGroup;
     AML_RESOURCE_PIN_GROUP_FUNCTION         PinGroupFunction;
     AML_RESOURCE_PIN_GROUP_CONFIG           PinGroupConfig;
+    AML_RESOURCE_CLOCK_INPUT                ClockInput;
 
     /* Utility overlays */
 
@@ -829,6 +848,9 @@ typedef union aml_resource
 
 } AML_RESOURCE;
 
+/* restore default alignment */
+
+#pragma pack()
 
 /* Interfaces used by both the disassembler and compiler */
 
diff --git a/sys/contrib/dev/acpica/source/include/platform/accygwin.h b/sys/contrib/dev/acpica/source/include/platform/accygwin.h
index 1eec32ac34..be567e4e8f 100644
--- a/sys/contrib/dev/acpica/source/include/platform/accygwin.h
+++ b/sys/contrib/dev/acpica/source/include/platform/accygwin.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acdragonfly.h b/sys/contrib/dev/acpica/source/include/platform/acdragonfly.h
index e0e69a864b..d881d18c95 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acdragonfly.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acdragonfly.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -167,6 +167,8 @@
 #define COMPILER_DEPENDENT_UINT64       uint64_t
 
 #define ACPI_STRUCT_INIT(field, value)  .field = value
+#define ACPI_TO_INTEGER(p)              ((uintptr_t)(p))
+
 #define ACPI_USE_DO_WHILE_0
 #define ACPI_USE_SYSTEM_CLIBRARY
 
@@ -230,6 +232,13 @@ struct acpicache;
 #define ACPI_USE_STANDARD_HEADERS
 #endif
 
+#ifdef ACPI_USE_STANDARD_HEADERS
+#include <stddef.h>
+#include <unistd.h>
+
+#define ACPI_OFFSET(d, f)               offsetof(d, f)
+#endif
+
 #define ACPI_CAST_PTHREAD_T(pthread)    ((ACPI_THREAD_ID) ACPI_TO_INTEGER (pthread))
 #define ACPI_FLUSH_CPU_CACHE()
 
diff --git a/sys/contrib/dev/acpica/source/include/platform/acdragonflyex.h b/sys/contrib/dev/acpica/source/include/platform/acdragonflyex.h
index 6c11c1773f..3686a17a12 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acdragonflyex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acdragonflyex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acefi.h b/sys/contrib/dev/acpica/source/include/platform/acefi.h
index c61798fd42..f35d7e8358 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acefi.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acefi.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acefiex.h b/sys/contrib/dev/acpica/source/include/platform/acefiex.h
index f0ae56cc8f..8e2379c06c 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acefiex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acefiex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -508,7 +508,7 @@ typedef struct {
     ACPI_EFI_TIME LastAccessTime;
     ACPI_EFI_TIME ModificationTime;
     UINT64 Attribute;
-    CHAR16 FileName[1];
+    CHAR16 FileName[];
 } ACPI_EFI_FILE_INFO;
 
 #define SIZE_OF_ACPI_EFI_FILE_INFO  ACPI_OFFSET(ACPI_EFI_FILE_INFO, FileName)
diff --git a/sys/contrib/dev/acpica/source/include/platform/acenv.h b/sys/contrib/dev/acpica/source/include/platform/acenv.h
index 740d449556..b3093e04e6 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acenv.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acenv.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -358,6 +358,8 @@
 #elif defined(_AED_EFI) || defined(_GNU_EFI) || defined(_EDK2_EFI)
 #include "acefi.h"
 
+#elif defined(__ZEPHYR__)
+#include "aczephyr.h"
 #else
 
 /* Unknown environment */
@@ -401,6 +403,12 @@
 #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pending) Pending = 0
 #endif
 
+/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */
+
+#ifndef ACPI_SEMAPHORE_NULL
+#define ACPI_SEMAPHORE_NULL NULL
+#endif
+
 /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
 
 #ifndef ACPI_FLUSH_CPU_CACHE
diff --git a/sys/contrib/dev/acpica/source/include/platform/acenvex.h b/sys/contrib/dev/acpica/source/include/platform/acenvex.h
index 42bb49010b..e9632619ab 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acenvex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acenvex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acfreebsd.h b/sys/contrib/dev/acpica/source/include/platform/acfreebsd.h
index 91e468795c..e81a5d40bc 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acfreebsd.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acfreebsd.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -166,6 +166,9 @@
 
 #define ACPI_UINTPTR_T      uintptr_t
 
+#define ACPI_TO_INTEGER(p)  ((uintptr_t)(p))
+#define ACPI_OFFSET(d, f)   __offsetof(d, f)
+
 #define ACPI_USE_DO_WHILE_0
 #define ACPI_USE_LOCAL_CACHE
 #define ACPI_USE_NATIVE_DIVIDE
@@ -211,6 +214,7 @@
 
 #if __STDC_HOSTED__
 #include <ctype.h>
+#include <unistd.h>
 #endif
 
 #define ACPI_CAST_PTHREAD_T(pthread)    ((ACPI_THREAD_ID) ACPI_TO_INTEGER (pthread))
diff --git a/sys/contrib/dev/acpica/source/include/platform/acgcc.h b/sys/contrib/dev/acpica/source/include/platform/acgcc.h
index 97a0260527..e959bfcf8d 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acgcc.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acgcc.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -211,4 +211,25 @@ typedef __builtin_va_list       va_list;
 #define ACPI_FALLTHROUGH __attribute__((__fallthrough__))
 #endif
 
+/*
+ * Flexible array members are not allowed to be part of a union under
+ * C99, but this is not for any technical reason. Work around the
+ * limitation.
+ */
+#ifndef __cplusplus
+#define ACPI_FLEX_ARRAY(TYPE, NAME)             \
+        struct {                                \
+                struct { } __Empty_ ## NAME;    \
+                TYPE NAME[];                    \
+        }
+#endif
+
+/*
+ * Explicitly mark strings that lack a terminating NUL character so
+ * that ACPICA can be built with -Wunterminated-string-initialization.
+ */
+#if __has_attribute(__nonstring__)
+#define ACPI_NONSTRING __attribute__((__nonstring__))
+#endif
+
 #endif /* __ACGCC_H__ */
diff --git a/sys/contrib/dev/acpica/source/include/platform/acgccex.h b/sys/contrib/dev/acpica/source/include/platform/acgccex.h
index 61d428524f..bb3b55cf2c 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acgccex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acgccex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/achaiku.h b/sys/contrib/dev/acpica/source/include/platform/achaiku.h
index b7ec29f47d..607913e6e5 100644
--- a/sys/contrib/dev/acpica/source/include/platform/achaiku.h
+++ b/sys/contrib/dev/acpica/source/include/platform/achaiku.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -191,11 +191,14 @@ struct mutex;
 /* ACPICA cache implementation is adequate. */
 #define ACPI_USE_LOCAL_CACHE
 
+/* On other platform the default definition (do nothing) is fine. */
+#if defined(__i386__) || defined(__x86_64__)
 #define ACPI_FLUSH_CPU_CACHE() __asm __volatile("wbinvd");
+#endif
 
 /* Based on FreeBSD's due to lack of documentation */
-extern int AcpiOsAcquireGlobalLock(uint32 *lock);
-extern int AcpiOsReleaseGlobalLock(uint32 *lock);
+extern int AcpiOsAcquireGlobalLock(volatile uint32_t *lock);
+extern int AcpiOsReleaseGlobalLock(volatile uint32_t *lock);
 
 #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq)    do {                \
         (Acq) = AcpiOsAcquireGlobalLock(&((GLptr)->GlobalLock));    \
@@ -205,6 +208,8 @@ extern int AcpiOsReleaseGlobalLock(uint32 *lock);
         (Acq) = AcpiOsReleaseGlobalLock(&((GLptr)->GlobalLock));    \
 } while (0)
 
+#define ACPI_SEMAPHORE_NULL -1
+
 #else /* _KERNEL_MODE */
 /* Host-dependent types and defines for user-space ACPICA */
 
diff --git a/sys/contrib/dev/acpica/source/include/platform/acintel.h b/sys/contrib/dev/acpica/source/include/platform/acintel.h
index 352c628cd8..21edaaf06e 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acintel.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acintel.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/aclinux.h b/sys/contrib/dev/acpica/source/include/platform/aclinux.h
index 17fd511311..fab9cb0ba1 100644
--- a/sys/contrib/dev/acpica/source/include/platform/aclinux.h
+++ b/sys/contrib/dev/acpica/source/include/platform/aclinux.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -252,6 +252,11 @@
 #define ACPI_SPINLOCK               spinlock_t *
 #define ACPI_CPU_FLAGS              unsigned long
 
+#define ACPI_UINTPTR_T              uintptr_t
+
+#define ACPI_TO_INTEGER(p)          ((uintptr_t)(p))
+#define ACPI_OFFSET(d, f)           offsetof(d, f)
+
 /* Use native linux version of AcpiOsAllocateZeroed */
 
 #define USE_NATIVE_ALLOCATE_ZEROED
@@ -305,7 +310,11 @@
 #define ACPI_USE_STANDARD_HEADERS
 
 #ifdef ACPI_USE_STANDARD_HEADERS
+#include <stddef.h>
 #include <unistd.h>
+#include <stdint.h>
+
+#define ACPI_OFFSET(d, f)   offsetof(d, f)
 #endif
 
 /* Define/disable kernel-specific declarators */
@@ -324,7 +333,7 @@
 
 #if defined(__ia64__)    || (defined(__x86_64__) && !defined(__ILP32__)) ||\
     defined(__aarch64__) || defined(__PPC64__) ||\
-    defined(__s390x__) ||\
+    defined(__s390x__)   || defined(__loongarch__) ||\
     (defined(__riscv) && (defined(__LP64__) || defined(_LP64)))
 #define ACPI_MACHINE_WIDTH          64
 #define COMPILER_DEPENDENT_INT64    long
diff --git a/sys/contrib/dev/acpica/source/include/platform/aclinuxex.h b/sys/contrib/dev/acpica/source/include/platform/aclinuxex.h
index f88559d2f1..89d00ccb8d 100644
--- a/sys/contrib/dev/acpica/source/include/platform/aclinuxex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/aclinuxex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acmacosx.h b/sys/contrib/dev/acpica/source/include/platform/acmacosx.h
index fd5f2b3f6b..6b4f292695 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acmacosx.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acmacosx.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acmsvc.h b/sys/contrib/dev/acpica/source/include/platform/acmsvc.h
index a2b9e4ced7..8f5d77816c 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acmsvc.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acmsvc.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acmsvcex.h b/sys/contrib/dev/acpica/source/include/platform/acmsvcex.h
index 8c837ec6ab..01c86397f7 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acmsvcex.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acmsvcex.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acnetbsd.h b/sys/contrib/dev/acpica/source/include/platform/acnetbsd.h
index 138b9ba6b4..6fa69bbb07 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acnetbsd.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acnetbsd.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acos2.h b/sys/contrib/dev/acpica/source/include/platform/acos2.h
index e93aba1145..b4dd359ae8 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acos2.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acos2.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acqnx.h b/sys/contrib/dev/acpica/source/include/platform/acqnx.h
index 30c12e9ef3..cae305e785 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acqnx.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acqnx.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/acwin.h b/sys/contrib/dev/acpica/source/include/platform/acwin.h
index 84e800023b..54e7790b90 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acwin.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acwin.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -172,12 +172,21 @@
 #define _CRT_SECURE_NO_WARNINGS
 #endif
 
-/* Eliminate warnings for POSIX clib function names (open, write, etc.) */
+ /* Eliminate warnings for POSIX clib function names (open, write, etc.) */
 
 #ifndef _CRT_NONSTDC_NO_DEPRECATE
 #define _CRT_NONSTDC_NO_DEPRECATE
 #endif
 
+ /*  Disable these warnings under Windows and MSVC since C4201: nameless
+  *  structs/unions are needed as ACPI event-handling under Linux/GCC breaks
+  *  with named and nested structs/unions while C4068: unknown pragma
+  *  complains of GCC pragmas in use to disable dangling ptr warnings
+  */
+
+#pragma warning( disable: 4201)
+#pragma warning( disable: 4068)
+#pragma warning( push)
 
 #define ACPI_MACHINE_WIDTH      32
 #define ACPI_USE_NATIVE_DIVIDE
diff --git a/sys/contrib/dev/acpica/source/include/platform/acwin64.h b/sys/contrib/dev/acpica/source/include/platform/acwin64.h
index 49b330aa78..cc8811b900 100644
--- a/sys/contrib/dev/acpica/source/include/platform/acwin64.h
+++ b/sys/contrib/dev/acpica/source/include/platform/acwin64.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/include/platform/aczephyr.h b/sys/contrib/dev/acpica/source/include/platform/aczephyr.h
new file mode 100644
index 0000000000..307eabafd7
--- /dev/null
+++ b/sys/contrib/dev/acpica/source/include/platform/aczephyr.h
@@ -0,0 +1,199 @@
+/******************************************************************************
+ *
+ * Module Name: aczephyr.h - OS specific defines, etc.
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#ifndef __ACZEPHYR_H__
+#define __ACZEPHYR_H__
+
+#if defined(__x86_64__)
+#define ACPI_MACHINE_WIDTH          64
+#else
+#define ACPI_32BIT_PHYSICAL_ADDRESS
+#define ACPI_MACHINE_WIDTH          32
+#define ACPI_USE_NATIVE_DIVIDE
+#define ACPI_USE_NATIVE_MATH64
+#endif
+
+#define COMPILER_DEPENDENT_INT64    long long
+#define COMPILER_DEPENDENT_UINT64   unsigned long long
+
+#define ACPI_NO_ERROR_MESSAGES
+#undef ACPI_DEBUG_OUTPUT
+#define ACPI_USE_SYSTEM_CLIBRARY
+#undef ACPI_DBG_TRACK_ALLOCATIONS
+#define ACPI_SINGLE_THREADED
+#define ACPI_USE_NATIVE_RSDP_POINTER
+
+#include <zephyr/kernel.h>
+#include <zephyr/device.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <zephyr/fs/fs.h>
+#include <zephyr/sys/printk.h>
+#include <zephyr/sys/__assert.h>
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiEnableDbgPrint
+ *
+ * PARAMETERS:  Enable, 	            - Enable/Disable debug print
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Enable/disable debug print
+ *
+ *****************************************************************************/
+
+void AcpiEnableDbgPrint (
+    bool Enable);
+#endif
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/osbsdtbl.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/osbsdtbl.c
index 410a6f47a4..2f190fa95d 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/osbsdtbl.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/osbsdtbl.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/osgendbg.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/osgendbg.c
index 581cee33ff..d526b589da 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/osgendbg.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/osgendbg.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2015, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/oslinuxtbl.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/oslinuxtbl.c
index c1438f8e9b..636a618419 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/oslinuxtbl.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/oslinuxtbl.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -167,7 +167,7 @@ typedef struct osl_table_info
 {
     struct osl_table_info   *Next;
     UINT32                  Instance;
-    char                    Signature[ACPI_NAMESEG_SIZE];
+    char                    Signature[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
 
 } OSL_TABLE_INFO;
 
@@ -1276,7 +1276,7 @@ OslListCustomizedTables (
 {
     void                    *TableDir;
     UINT32                  Instance;
-    char                    TempName[ACPI_NAMESEG_SIZE];
+    char                    TempName[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     char                    *Filename;
     ACPI_STATUS             Status = AE_OK;
 
@@ -1628,7 +1628,7 @@ OslGetCustomizedTable (
 {
     void                    *TableDir;
     UINT32                  CurrentInstance = 0;
-    char                    TempName[ACPI_NAMESEG_SIZE];
+    char                    TempName[ACPI_NAMESEG_SIZE] ACPI_NONSTRING;
     char                    TableFilename[PATH_MAX];
     char                    *Filename;
     ACPI_STATUS             Status;
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixdir.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixdir.c
index a889c4b8d5..9a6d4dabea 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixdir.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixdir.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixmap.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixmap.c
index be8423f689..40c647ccb7 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixmap.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixmap.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixxf.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixxf.c
index 33fbb0cead..a26d3e44f9 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixxf.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/osunixxf.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswindir.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswindir.c
index bbad99753c..8b14673d23 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswindir.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswindir.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswintbl.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswintbl.c
index 34176dd8dd..1bb1ef5d8e 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswintbl.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswintbl.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswinxf.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswinxf.c
index b903f09aa4..325ec2f3dc 100644
--- a/sys/contrib/dev/acpica/source/os_specific/service_layers/oswinxf.c
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/oswinxf.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/os_specific/service_layers/oszephyr.c b/sys/contrib/dev/acpica/source/os_specific/service_layers/oszephyr.c
new file mode 100644
index 0000000000..4e5c1234d5
--- /dev/null
+++ b/sys/contrib/dev/acpica/source/os_specific/service_layers/oszephyr.c
@@ -0,0 +1,1154 @@
+/******************************************************************************
+ *
+ * Module Name: oszephyr - Zephyr OSL
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * 1. Copyright Notice
+ *
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
+ * All rights reserved.
+ *
+ * 2. License
+ *
+ * 2.1. This is your license from Intel Corp. under its intellectual property
+ * rights. You may have additional license terms from the party that provided
+ * you this software, covering your right to use that party's intellectual
+ * property rights.
+ *
+ * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
+ * copy of the source code appearing in this file ("Covered Code") an
+ * irrevocable, perpetual, worldwide license under Intel's copyrights in the
+ * base code distributed originally by Intel ("Original Intel Code") to copy,
+ * make derivatives, distribute, use and display any portion of the Covered
+ * Code in any form, with the right to sublicense such rights; and
+ *
+ * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
+ * license (with the right to sublicense), under only those claims of Intel
+ * patents that are infringed by the Original Intel Code, to make, use, sell,
+ * offer to sell, and import the Covered Code and derivative works thereof
+ * solely to the minimum extent necessary to exercise the above copyright
+ * license, and in no event shall the patent license extend to any additions
+ * to or modifications of the Original Intel Code. No other license or right
+ * is granted directly or by implication, estoppel or otherwise;
+ *
+ * The above copyright and patent license is granted only if the following
+ * conditions are met:
+ *
+ * 3. Conditions
+ *
+ * 3.1. Redistribution of Source with Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification with rights to further distribute source must include
+ * the above Copyright Notice, the above License, this list of Conditions,
+ * and the following Disclaimer and Export Compliance provision. In addition,
+ * Licensee must cause all Covered Code to which Licensee contributes to
+ * contain a file documenting the changes Licensee made to create that Covered
+ * Code and the date of any change. Licensee must include in that file the
+ * documentation of any changes made by any predecessor Licensee. Licensee
+ * must include a prominent statement that the modification is derived,
+ * directly or indirectly, from Original Intel Code.
+ *
+ * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
+ * Redistribution of source code of any substantial portion of the Covered
+ * Code or modification without rights to further distribute source must
+ * include the following Disclaimer and Export Compliance provision in the
+ * documentation and/or other materials provided with distribution. In
+ * addition, Licensee may not authorize further sublicense of source of any
+ * portion of the Covered Code, and must include terms to the effect that the
+ * license from Licensee to its licensee is limited to the intellectual
+ * property embodied in the software Licensee provides to its licensee, and
+ * not to intellectual property embodied in modifications its licensee may
+ * make.
+ *
+ * 3.3. Redistribution of Executable. Redistribution in executable form of any
+ * substantial portion of the Covered Code or modification must reproduce the
+ * above Copyright Notice, and the following Disclaimer and Export Compliance
+ * provision in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3.4. Intel retains all right, title, and interest in and to the Original
+ * Intel Code.
+ *
+ * 3.5. Neither the name Intel nor any other trademark owned or controlled by
+ * Intel shall be used in advertising or otherwise to promote the sale, use or
+ * other dealings in products derived from or relating to the Covered Code
+ * without prior written authorization from Intel.
+ *
+ * 4. Disclaimer and Export Compliance
+ *
+ * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
+ * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
+ * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
+ * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
+ * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
+ * PARTICULAR PURPOSE.
+ *
+ * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
+ * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
+ * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
+ * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
+ * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
+ * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
+ * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
+ * LIMITED REMEDY.
+ *
+ * 4.3. Licensee shall not export, either directly or indirectly, any of this
+ * software or system incorporating such software without first obtaining any
+ * required license or other approval from the U. S. Department of Commerce or
+ * any other agency or department of the United States Government. In the
+ * event Licensee exports any such software from the United States or
+ * re-exports any such software from a foreign destination, Licensee shall
+ * ensure that the distribution and export/re-export of the software is in
+ * compliance with all laws, regulations, orders, or other restrictions of the
+ * U.S. Export Administration Regulations. Licensee agrees that neither it nor
+ * any of its subsidiaries will export/re-export any technical data, process,
+ * software, or service, directly or indirectly, to any country for which the
+ * United States government or any agency thereof requires an export license,
+ * other governmental approval, or letter of assurance, without first obtaining
+ * such license, approval or letter.
+ *
+ *****************************************************************************
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * following license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions, and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    substantially similar to the "NO WARRANTY" disclaimer below
+ *    ("Disclaimer") and any redistribution must be conditioned upon
+ *    including a substantially similar Disclaimer requirement for further
+ *    binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ *    of any contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, you may choose to be licensed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ *****************************************************************************/
+
+#include "acpi.h"
+#include "accommon.h"
+#include "acapps.h"
+#include "aslcompiler.h"
+#include <zephyr/arch/x86/x86_acpi_osal.h>
+#include <zephyr/drivers/pcie/pcie.h>
+#include <zephyr/dt-bindings/interrupt-controller/intel-ioapic.h>
+#include <zephyr/sys/__assert.h>
+
+#include <zephyr/logging/log.h>
+LOG_MODULE_DECLARE(acpica, LOG_LEVEL_ERR);
+
+typedef void (*zephyr_irq_t)(const void *);
+
+/* Global variables use from acpica lib. */
+BOOLEAN                     AslGbl_DoTemplates = FALSE;
+BOOLEAN                     AslGbl_VerboseTemplates = FALSE;
+
+char                        AslGbl_MsgBuffer[ASL_MSG_BUFFER_SIZE];
+static BOOLEAN              EnDbgPrint;
+static ACPI_PHYSICAL_ADDRESS RsdpPhyAdd;
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsReadable
+ *
+ * PARAMETERS:  Pointer             - Area to be verified
+ *              Length              - Size of area
+ *
+ * RETURN:      TRUE if readable for entire Length
+ *
+ * DESCRIPTION: Verify that a pointer is valid for reading
+ *
+ *****************************************************************************/
+
+BOOLEAN
+AcpiOsReadable (
+    void                    *Pointer,
+    ACPI_SIZE               Length)
+{
+    return (TRUE);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiEnableDbgPrint
+ *
+ * PARAMETERS:  en, 	            - Enable/Disable debug print
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Formatted output
+ *
+ *****************************************************************************/
+
+void
+AcpiEnableDbgPrint (
+    bool                    Enable)
+{
+    if (Enable)
+    {
+        EnDbgPrint = TRUE;
+    }
+    else
+    {
+        EnDbgPrint = FALSE;
+    }
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsPrintf
+ *
+ * PARAMETERS:  Fmt, ...            - Standard printf format
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Formatted output
+ *
+ *****************************************************************************/
+
+void ACPI_INTERNAL_VAR_XFACE
+AcpiOsPrintf (
+    const char              *Fmt,
+    ...)
+{
+    va_list                 args;
+
+    va_start (args, Fmt);
+
+    if (EnDbgPrint)
+    {
+        vprintk (Fmt, args);
+    }
+
+    va_end (args);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsGetLine
+ *
+ * PARAMETERS:  Buffer              - Where to return the command line
+ *              BufferLength        - Maximum Length of Buffer
+ *              BytesRead           - Where the actual byte count is returned
+ *
+ * RETURN:      Status and actual bytes read
+ *
+ * DESCRIPTION: Formatted input with argument list pointer
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsGetLine (
+    char                    *Buffer,
+    UINT32                  BufferLength,
+    UINT32                  *BytesRead)
+{
+    return (-1);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsAllocate
+ *
+ * PARAMETERS:  Size                - Amount to allocate, in bytes
+ *
+ * RETURN:      Pointer to the new allocation. Null on error.
+ *
+ * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS.
+ *
+ *****************************************************************************/
+
+void *
+AcpiOsAllocate (
+    ACPI_SIZE               Size)
+{
+    return (k_malloc (Size));
+}
+
+
+#ifdef USE_NATIVE_ALLOCATE_ZEROED
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsAllocateZeroed
+ *
+ * PARAMETERS:  Size                - Amount to allocate, in bytes
+ *
+ * RETURN:      Pointer to the new allocation. Null on error.
+ *
+ * DESCRIPTION: Allocate and zero memory. Algorithm is dependent on the OS.
+ *
+ *****************************************************************************/
+
+void *
+AcpiOsAllocateZeroed (
+    ACPI_SIZE               Size)
+{
+    void *mem;
+
+    mem = AcpiOsAllocate (Size);
+
+    if (mem)
+    {
+        memset (mem, 0, Size);
+    }
+
+    return (mem);
+}
+#endif
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsFree
+ *
+ * PARAMETERS:  Mem                 - Pointer to previously allocated memory
+ *
+ * RETURN:      None.
+ *
+ * DESCRIPTION: Free memory allocated via AcpiOsAllocate
+ *
+ *****************************************************************************/
+
+void
+AcpiOsFree (
+    void                    *Mem)
+{
+    k_free (Mem);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsReadMemory
+ *
+ * PARAMETERS:  Address             - Physical Memory Address to read
+ *              Value               - Where Value is placed
+ *              Width               - Number of bits (8,16,32, or 64)
+ *
+ * RETURN:      Value read from physical memory Address. Always returned
+ *              as a 64-bit integer, regardless of the read Width.
+ *
+ * DESCRIPTION: Read data from a physical memory Address
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsReadMemory (
+    ACPI_PHYSICAL_ADDRESS   Address,
+    UINT64                  *Value,
+    UINT32                  Width)
+{
+    switch (Width)
+    {
+    case 8:
+
+        *((UINT8 *) Value) = sys_read8 (Address);
+        break;
+
+    case 16:
+
+        *((UINT16 *) Value) = sys_read16 (Address);
+        break;
+
+    case 32:
+
+        *((UINT32 *) Value) = sys_read32 (Address);
+        break;
+#if defined(__x86_64__)
+    case 64:
+
+        *((UINT64 *) Value) = sys_read64 (Address);
+        break;
+#endif
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsWriteMemory
+ *
+ * PARAMETERS:  Address             - Physical Memory Address to write
+ *              Value               - Value to write
+ *              Width               - Number of bits (8,16,32, or 64)
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Write data to a physical memory Address
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsWriteMemory (
+    ACPI_PHYSICAL_ADDRESS   Address,
+    UINT64                  Value,
+    UINT32                  Width)
+{
+    switch (Width)
+    {
+    case 8:
+
+        sys_write8 ((UINT8) Value, Address);
+        break;
+
+    case 16:
+
+        sys_write16 ((UINT16) Value, Address);
+        break;
+
+    case 32:
+
+        sys_write32 ((UINT32) Value, Address);
+        break;
+#if defined(__x86_64__)
+    case 64:
+
+        sys_write64 ((UINT64) Value, Address);
+        break;
+#endif
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsReadPort
+ *
+ * PARAMETERS:  Address             - Address of I/O port/register to read
+ *              Value               - Where Value is placed
+ *              Width               - Number of bits
+ *
+ * RETURN:      Value read from port
+ *
+ * DESCRIPTION: Read data from an I/O port or register
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsReadPort (
+    ACPI_IO_ADDRESS         Address,
+    UINT32                  *Value,
+    UINT32                  Width)
+{
+
+    switch (Width)
+    {
+    case 8:
+
+        *((UINT8 *) Value) = sys_in8 (Address);
+        break;
+
+    case 16:
+
+        *((UINT16 *) Value) = sys_in16 (Address);
+        break;
+
+    case 32:
+
+        *((UINT32 *) Value) = sys_in32 (Address);
+        break;
+
+    case 64:
+
+        *((UINT32 *) Value) = sys_in32 (Address);
+        *((UINT32 *) Value + 4) = sys_in32 (Address + 4);
+        break;
+
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsWritePort
+ *
+ * PARAMETERS:  Address             - Address of I/O port/register to write
+ *              Value               - Value to write
+ *              Width               - Number of bits
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Write data to an I/O port or register
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsWritePort (
+    ACPI_IO_ADDRESS         Address,
+    UINT32                  Value,
+    UINT32                  Width)
+{
+
+    switch (Width)
+    {
+    case 8:
+
+        sys_out8 ((UINT8) Value, Address);
+        break;
+
+    case 16:
+
+        sys_out16 ((UINT16) Value, Address);
+        break;
+
+    case 32:
+
+        sys_out32 ((UINT32) Value, Address);
+        break;
+
+    case 64:
+
+        sys_out32 ((UINT32) Value, Address);
+        sys_out32 ((UINT32) (Value + 4), (Address + 4));
+        break;
+
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsWritePciConfiguration
+ *
+ * PARAMETERS:  PciId               - Seg/Bus/Dev
+ *              Register            - Device Register
+ *              Value               - Value to be written
+ *              Width               - Number of bits
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Write data to PCI configuration space
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsWritePciConfiguration (
+    ACPI_PCI_ID             *PciId,
+    UINT32                  Register,
+    UINT64                  Value,
+    UINT32                  Width)
+{
+    UINT32                  value32;
+    pcie_bdf_t              bdf = PCIE_BDF (PciId->Bus, PciId->Device, PciId->Function);
+
+
+    switch (Width)
+    {
+    case 8:
+
+        value32 = pcie_conf_read (bdf, Register);
+        value32 = (value32 & 0xffffff00) | (UINT8) Value;
+        pcie_conf_write (bdf, Register, value32);
+        break;
+
+    case 16:
+
+        value32 = pcie_conf_read (bdf, Register);
+        value32 = (value32 & 0xffff0000) | (UINT16) Value;
+        pcie_conf_write (bdf, Register, value32);
+        break;
+
+    case 32:
+
+        pcie_conf_write (bdf, Register, (UINT32) Value);
+        break;
+
+    case 64:
+
+        pcie_conf_write (bdf, Register, (UINT32) Value);
+        pcie_conf_write (bdf, (Register + 4), (UINT32) (Value >> 32));
+        break;
+
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsReadPciConfiguration
+ *
+ * PARAMETERS:  PciId               - Seg/Bus/Dev
+ *              Register            - Device Register
+ *              Value               - Buffer Where Value is placed
+ *              Width               - Number of bits
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Read data from PCI configuration space
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsReadPciConfiguration (
+    ACPI_PCI_ID             *PciId,
+    UINT32                  Register,
+    UINT64                  *Value,
+    UINT32                  Width)
+{
+
+    pcie_bdf_t bdf = PCIE_BDF (PciId->Bus, PciId->Device, PciId->Function);
+
+    switch (Width)
+    {
+    case 8:
+
+        *((UINT8 *) Value) = (UINT8) pcie_conf_read (bdf, Register);
+        break;
+
+    case 16:
+
+        *((UINT16 *) Value) = (UINT16) pcie_conf_read (bdf, Register);
+        break;
+
+    case 32:
+
+        *((UINT32 *) Value) = (UINT32) pcie_conf_read (bdf, Register);
+        break;
+
+    case 64:
+
+        *((UINT32 *) Value) = (UINT32) pcie_conf_read (bdf, Register);
+        *((UINT32 *) Value + 1) = (UINT32) pcie_conf_read (bdf, (Register + 4));
+        break;
+
+    default:
+
+        return (AE_BAD_PARAMETER);
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsRedirectOutput
+ *
+ * PARAMETERS:  Destination         - An open file handle/pointer
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf
+ *
+ *****************************************************************************/
+
+void
+AcpiOsRedirectOutput (
+    void                    *Destination)
+{
+
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsPredefinedOverride
+ *
+ * PARAMETERS:  InitVal             - Initial Value of the predefined object
+ *              NewVal              - The new Value for the object
+ *
+ * RETURN:      Status, pointer to Value. Null pointer returned if not
+ *              overriding.
+ *
+ * DESCRIPTION: Allow the OS to override predefined names
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsPredefinedOverride (
+    const ACPI_PREDEFINED_NAMES *InitVal,
+    ACPI_STRING                 *NewVal)
+{
+
+    if (!InitVal || !NewVal)
+    {
+        return (AE_BAD_PARAMETER);
+    }
+
+    *NewVal = NULL;
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsTableOverride
+ *
+ * PARAMETERS:  ExistingTable       - Header of current table (probably firmware)
+ *              NewTable            - Where an entire new table is returned.
+ *
+ * RETURN:      Status, pointer to new table. Null pointer returned if no
+ *              table is available to override
+ *
+ * DESCRIPTION: Return a different version of a table if one is available
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsTableOverride (
+    ACPI_TABLE_HEADER       *ExistingTable,
+    ACPI_TABLE_HEADER       **NewTable)
+{
+
+    if (!ExistingTable || !NewTable)
+    {
+        return (AE_BAD_PARAMETER);
+    }
+
+    *NewTable = NULL;
+
+    return (AE_NO_ACPI_TABLES);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsGetRootPointer
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      RSDP physical Address
+ *
+ * DESCRIPTION: Gets the root pointer (RSDP)
+ *
+ *****************************************************************************/
+
+ACPI_PHYSICAL_ADDRESS
+AcpiOsGetRootPointer (
+    void)
+{
+	 LOG_DBG ("");
+
+	if(RsdpPhyAdd)
+	{
+		return RsdpPhyAdd;
+	}
+
+	RsdpPhyAdd = (ACPI_PHYSICAL_ADDRESS)acpi_rsdp_get();
+
+	return RsdpPhyAdd;
+}
+
+#ifndef ACPI_USE_NATIVE_MEMORY_MAPPING
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsMapMemory
+ *
+ * PARAMETERS:  Where               - Physical Address of memory to be mapped
+ *              Length              - How much memory to map
+ *
+ * RETURN:      Pointer to mapped memory. Null on error.
+ *
+ * DESCRIPTION: Map physical memory into caller's Address space
+ *
+ *****************************************************************************/
+
+void *
+AcpiOsMapMemory (
+    ACPI_PHYSICAL_ADDRESS   Where,
+    ACPI_SIZE               Length)
+{
+    uint8_t                 *VirtlAdd;
+
+    LOG_DBG ("");
+    z_phys_map (&VirtlAdd, Where, Length, K_MEM_PERM_RW);
+    return ((void *) VirtlAdd);
+}
+#endif
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsUnmapMemory
+ *
+ * PARAMETERS:  Where               - Logical Address of memory to be unmapped
+ *              Length              - How much memory to unmap
+ *
+ * RETURN:      None.
+ *
+ * DESCRIPTION: Delete a previously created mapping. Where and Length must
+ *              correspond to a previous mapping exactly.
+ *
+ *****************************************************************************/
+
+void
+AcpiOsUnmapMemory (
+    void                    *Where,
+    ACPI_SIZE               Length)
+{
+    LOG_DBG ("");
+    z_phys_unmap (Where, Length);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsPhysicalTableOverride
+ *
+ * PARAMETERS:  ExistingTable       - Header of current table (probably firmware)
+ *              NewAddress          - Where new table Address is returned
+ *                                    (Physical Address)
+ *              NewTableLength      - Where new table Length is returned
+ *
+ * RETURN:      Status, Address/Length of new table. Null pointer returned
+ *              if no table is available to override.
+ *
+ * DESCRIPTION: Returns AE_SUPPORT, function not used in user space.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsPhysicalTableOverride (
+    ACPI_TABLE_HEADER       *ExistingTable,
+    ACPI_PHYSICAL_ADDRESS   *NewAddress,
+    UINT32                  *NewTableLength)
+{
+
+    LOG_DBG ("");
+    return (AE_SUPPORT);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsInitialize
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Init this OSL
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsInitialize (
+    void)
+{
+    LOG_DBG ("");
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsStall
+ *
+ * PARAMETERS:  Microseconds        - Time to stall
+ *
+ * RETURN:      None. Blocks until stall is completed.
+ *
+ * DESCRIPTION: Sleep at microsecond granularity
+ *
+ *****************************************************************************/
+
+void
+AcpiOsStall (
+    UINT32                  Microseconds)
+{
+    k_busy_wait (Microseconds);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsSleep
+ *
+ * PARAMETERS:  Milliseconds        - Time to sleep
+ *
+ * RETURN:      None. Blocks until sleep is completed.
+ *
+ * DESCRIPTION: Sleep at millisecond granularity
+ *
+ *****************************************************************************/
+
+void
+AcpiOsSleep (
+    UINT64                  Milliseconds)
+{
+    k_msleep ((UINT32) Milliseconds);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsEnterSleep
+ *
+ * PARAMETERS:  SleepState          - Which sleep state to enter
+ *              RegaValue           - Register A Value
+ *              RegbValue           - Register B Value
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: A hook before writing sleep registers to enter the sleep
+ *              state. Return AE_CTRL_SKIP to skip further sleep register
+ *              writes.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsEnterSleep (
+    UINT8                   SleepState,
+    UINT32                  RegaValue,
+    UINT32                  RegbValue)
+{
+    __ASSERT (FALSE, "function Not implemented");
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsGetTimer
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      Current ticks in 100-nanosecond units
+ *
+ * DESCRIPTION: Get the Value of a system timer
+ *
+ ******************************************************************************/
+
+UINT64
+AcpiOsGetTimer (
+    void)
+{
+    return acpi_timer_get();
+}
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsInstallInterruptHandler
+ *
+ * PARAMETERS:  InterruptNumber     - Level handler should respond to.
+ *              ServiceRoutine      - Address of the ACPI interrupt handler
+ *              Context             - User context
+ *
+ * RETURN:      Handle to the newly installed handler.
+ *
+ * DESCRIPTION: Install an interrupt handler. Used to install the ACPI
+ *              OS-independent handler.
+ *
+ *****************************************************************************/
+
+UINT32
+AcpiOsInstallInterruptHandler (
+    UINT32                  InterruptNumber,
+    ACPI_OSD_HANDLER        ServiceRoutine,
+    void                    *Context)
+{
+    LOG_DBG ("");
+    irq_connect_dynamic (InterruptNumber, 3, (zephyr_irq_t) ServiceRoutine, Context,
+        IRQ_TYPE_LOWEST_LEVEL_LOW);
+    irq_enable (InterruptNumber);
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsRemoveInterruptHandler
+ *
+ * PARAMETERS:  Handle              - Returned when handler was installed
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Uninstalls an interrupt handler.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsRemoveInterruptHandler (
+    UINT32                  InterruptNumber,
+    ACPI_OSD_HANDLER        ServiceRoutine)
+{
+
+    LOG_DBG ("");
+    irq_disable (InterruptNumber);
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiOsSignal
+ *
+ * PARAMETERS:  Function            - ACPICA signal function code
+ *              Info                - Pointer to function-dependent structure
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Miscellaneous functions. Example implementation only.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+AcpiOsSignal (
+    UINT32                  Function,
+    void                    *Info)
+{
+    switch (Function)
+    {
+    case ACPI_SIGNAL_FATAL:
+        LOG_DBG ("ACPI_SIGNAL_FATAL error");
+        break;
+
+    case ACPI_SIGNAL_BREAKPOINT:
+        LOG_DBG ("ACPI_SIGNAL_BREAKPOINT");
+        break;
+
+    default:
+        break;
+    }
+
+    return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
+ * FUNCTION:    Spinlock/Semaphore interfaces
+ *
+ * DESCRIPTION: Map these interfaces to semaphore interfaces
+ *
+ *****************************************************************************/
+
+#ifdef ACPI_SINGLE_THREADED
+ACPI_STATUS
+AcpiOsCreateLock (
+    ACPI_SPINLOCK           *OutHandle)
+{
+    LOG_DBG ("");
+
+    return (AE_OK);
+}
+
+void
+AcpiOsDeleteLock (
+    ACPI_SPINLOCK           Handle)
+{
+    LOG_DBG ("");
+}
+
+ACPI_CPU_FLAGS
+AcpiOsAcquireLock (
+    ACPI_SPINLOCK           Handle)
+{
+    LOG_DBG ("");
+    return (0);
+}
+
+void
+AcpiOsReleaseLock (
+    ACPI_SPINLOCK           Handle,
+    ACPI_CPU_FLAGS          Flags)
+{
+    LOG_DBG ("");
+}
+
+ACPI_STATUS
+AcpiOsCreateSemaphore (
+    UINT32              MaxUnits,
+    UINT32              InitialUnits,
+    ACPI_HANDLE         *OutHandle)
+{
+    *OutHandle = (ACPI_HANDLE) 1;
+    return (AE_OK);
+}
+
+ACPI_STATUS
+AcpiOsDeleteSemaphore (
+    ACPI_HANDLE         Handle)
+{
+    return (AE_OK);
+}
+
+ACPI_STATUS
+AcpiOsWaitSemaphore (
+    ACPI_HANDLE         Handle,
+    UINT32              Units,
+    UINT16              Timeout)
+{
+    return (AE_OK);
+}
+
+ACPI_STATUS
+AcpiOsSignalSemaphore (
+    ACPI_HANDLE         Handle,
+    UINT32              Units)
+{
+    return (AE_OK);
+}
+
+ACPI_THREAD_ID
+AcpiOsGetThreadId (
+    void)
+{
+    LOG_DBG ("");
+    return (1);
+}
+
+ACPI_STATUS
+AcpiOsExecute (
+    ACPI_EXECUTE_TYPE       Type,
+    ACPI_OSD_EXEC_CALLBACK  Function,
+    void                    *Context)
+{
+    Function (Context);
+    return (AE_OK);
+}
+#endif
diff --git a/sys/contrib/dev/acpica/source/tools/acpibin/abcompare.c b/sys/contrib/dev/acpica/source/tools/acpibin/abcompare.c
index cd9d833406..1de931afa4 100644
--- a/sys/contrib/dev/acpica/source/tools/acpibin/abcompare.c
+++ b/sys/contrib/dev/acpica/source/tools/acpibin/abcompare.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpibin/abmain.c b/sys/contrib/dev/acpica/source/tools/acpibin/abmain.c
index b953e264f5..904e89ead3 100644
--- a/sys/contrib/dev/acpica/source/tools/acpibin/abmain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpibin/abmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpibin/acpibin.h b/sys/contrib/dev/acpica/source/tools/acpibin/acpibin.h
index 1c3c9d433b..af6b281cb6 100644
--- a/sys/contrib/dev/acpica/source/tools/acpibin/acpibin.h
+++ b/sys/contrib/dev/acpica/source/tools/acpibin/acpibin.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpidump/acpidump.h b/sys/contrib/dev/acpica/source/tools/acpidump/acpidump.h
index 78169682c5..ba70415253 100644
--- a/sys/contrib/dev/acpica/source/tools/acpidump/acpidump.h
+++ b/sys/contrib/dev/acpica/source/tools/acpidump/acpidump.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpidump/apdump.c b/sys/contrib/dev/acpica/source/tools/acpidump/apdump.c
index 90444084b5..c582b4342f 100644
--- a/sys/contrib/dev/acpica/source/tools/acpidump/apdump.c
+++ b/sys/contrib/dev/acpica/source/tools/acpidump/apdump.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -234,7 +234,9 @@ ApIsValidChecksum (
     }
     else
     {
-        Status = AcpiTbVerifyChecksum (Table, Table->Length);
+        /* We don't have to check for a CDAT here, since CDAT is not in the RSDT/XSDT */
+
+        Status = AcpiUtVerifyChecksum (Table, Table->Length);
     }
 
     if (ACPI_FAILURE (Status))
diff --git a/sys/contrib/dev/acpica/source/tools/acpidump/apfiles.c b/sys/contrib/dev/acpica/source/tools/acpidump/apfiles.c
index d9e4e5cfd6..8fe54f77ec 100644
--- a/sys/contrib/dev/acpica/source/tools/acpidump/apfiles.c
+++ b/sys/contrib/dev/acpica/source/tools/acpidump/apfiles.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpidump/apmain.c b/sys/contrib/dev/acpica/source/tools/acpidump/apmain.c
index 592d33a512..352ebdab96 100644
--- a/sys/contrib/dev/acpica/source/tools/acpidump/apmain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpidump/apmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aecommon.h b/sys/contrib/dev/acpica/source/tools/acpiexec/aecommon.h
index c325d8f3b6..7f8bb69026 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aecommon.h
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aecommon.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aeexception.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aeexception.c
index df35aa864f..9378f0c911 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aeexception.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aeexception.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -334,7 +334,7 @@ AeSignalHandler (
         SigintCount++;
         if (SigintCount >= ACPI_MAX_CONTROL_C)
         {
-            exit (0);
+            _exit (0);
         }
 
         /* Abort the application if there are no methods executing */
@@ -368,7 +368,7 @@ AeSignalHandler (
 
     AcpiOsPrintf (AE_PREFIX "Terminating\n");
     (void) AcpiOsTerminate ();
-    exit (0);
+    _exit (0);
 }
 
 
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aeexec.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aeexec.c
index d8d93e6182..1c41f4da5b 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aeexec.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aeexec.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aehandlers.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aehandlers.c
index a1abdddd02..b628aecd1d 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aehandlers.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aehandlers.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aeinitfile.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aeinitfile.c
index d568b50e93..d079edfd76 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aeinitfile.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aeinitfile.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aeinstall.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aeinstall.c
index 1d32443b15..8370bdd747 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aeinstall.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aeinstall.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -176,6 +176,13 @@ AeInstallPciHandler (
     void                    *Context,
     void                    **ReturnValue);
 
+static ACPI_STATUS
+AeInstallGedHandler (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  Level,
+    void                    *Context,
+    void                    **ReturnValue);
+
 
 BOOLEAN                     AcpiGbl_DisplayRegionAccess = FALSE;
 ACPI_CONNECTION_INFO        AeMyContext;
@@ -343,6 +350,110 @@ AeInstallRegionHandlers (
     }
 }
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AeInstallGedHandler
+ *
+ * PARAMETERS:  ACPI_WALK_NAMESPACE callback
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Walk entire namespace, install a handler for every GED
+ *              device found.
+ *
+ ******************************************************************************/
+static ACPI_STATUS
+AeInstallGedHandler (
+    ACPI_HANDLE             ObjHandle,
+    UINT32                  Level,
+    void                    *Context,
+    void                    **ReturnValue)
+{
+
+	ACPI_BUFFER             ReturnBuffer;
+	ACPI_STATUS Status;
+	ACPI_RESOURCE *ResourceList;
+	ACPI_RESOURCE_EXTENDED_IRQ *extended_irq_rsc;
+    ACPI_NAMESPACE_NODE     *Node;
+	ACPI_NAMESPACE_NODE		*EvtMethodNode;
+
+    ACPI_FUNCTION_ENTRY();
+
+	/* Obtain the Namespace Node of this GED object handle. */
+	Node = AcpiNsValidateHandle (ObjHandle);
+	if (!Node)
+	{
+		return (AE_BAD_PARAMETER);
+	}
+
+	/*
+	 * A GED device must have one _EVT method.
+	 * Obtain the _EVT method and store it in the global
+	 * GED register.
+	 */
+	Status = AcpiNsSearchOneScope (
+		*ACPI_CAST_PTR (ACPI_NAME, METHOD_NAME__EVT),
+		Node,
+		ACPI_TYPE_METHOD,
+		&EvtMethodNode
+	);
+	if (ACPI_FAILURE (Status))
+	{
+		AcpiOsPrintf ("Failed to obtain _EVT method for the GED device.\n");
+		return Status;
+	}
+
+	ReturnBuffer.Pointer = NULL;
+    ReturnBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+
+	Status = AcpiGetCurrentResources (ObjHandle, &ReturnBuffer);
+	if (ACPI_FAILURE (Status))
+	{
+		AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n",
+			AcpiFormatException (Status));
+		return Status;
+	}
+
+	/* Traverse the _CRS resource list */
+	ResourceList = ACPI_CAST_PTR (ACPI_RESOURCE, ReturnBuffer.Pointer);
+	while (ResourceList->Type != ACPI_RESOURCE_TYPE_END_TAG) {
+
+		switch (ResourceList->Type) {
+		 case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: {
+
+			/*
+			 * Found an Interrupt resource. Link the interrupt resource
+			 * and the _EVT method of this GED device in the GED event handler list.
+			 */
+			ACPI_GED_HANDLER_INFO *GedHandler =
+			ACPI_ALLOCATE (sizeof (ACPI_SCI_HANDLER_INFO));
+			if (!GedHandler)
+			{
+				return AE_NO_MEMORY;
+			}
+
+			GedHandler->Next = AcpiGbl_GedHandlerList;
+			AcpiGbl_GedHandlerList = GedHandler;
+
+			extended_irq_rsc = &ResourceList->Data.ExtendedIrq;
+
+			GedHandler->IntId = extended_irq_rsc->Interrupts[0];
+			GedHandler->EvtMethod = EvtMethodNode;
+
+			AcpiOsPrintf ("Interrupt ID %d\n", extended_irq_rsc->Interrupts[0]);
+
+			break;
+		 }
+		 default:
+
+			AcpiOsPrintf ("Resource type %X\n", ResourceList->Type);
+		}
+
+		ResourceList = ACPI_NEXT_RESOURCE (ResourceList);
+	}
+
+	return AE_OK;
+}
 
 /*******************************************************************************
  *
@@ -352,7 +463,7 @@ AeInstallRegionHandlers (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Install handlers for all EC and PCI devices in the namespace
+ * DESCRIPTION: Install handlers for all EC, PCI and GED devices in the namespace
  *
  ******************************************************************************/
 
@@ -368,6 +479,11 @@ AeInstallDeviceHandlers (
     /* Install a PCI handler */
 
     AcpiGetDevices ("PNP0A08", AeInstallPciHandler, NULL, NULL);
+
+    /* Install a GED handler */
+
+    AcpiGetDevices ("ACPI0013", AeInstallGedHandler, NULL, NULL);
+
     return (AE_OK);
 }
 
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aemain.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aemain.c
index 7db86f7840..47fefb6416 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aemain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aemain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aeregion.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aeregion.c
index decd17f7fc..f91c2cf1f9 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aeregion.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aeregion.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.c
index 510c7e2e63..219b6554b2 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -267,7 +267,7 @@ AeInitializeTableHeader (
     /* Set the checksum, must set to zero first */
 
     Header->Checksum = 0;
-    Header->Checksum = (UINT8) -AcpiTbChecksum (
+    Header->Checksum = (UINT8) -AcpiUtChecksum (
         (void *) Header, Header->Length);
 }
 
@@ -420,7 +420,7 @@ AeBuildLocalTables (
     AeInitializeTableHeader ((void *) LocalXSDT, ACPI_SIG_XSDT, XsdtSize);
 
     LocalRSDP.Checksum = 0;
-    LocalRSDP.Checksum = (UINT8) -AcpiTbChecksum (
+    LocalRSDP.Checksum = (UINT8) -AcpiUtChecksum (
         (void *) &LocalRSDP, ACPI_RSDP_CHECKSUM_LENGTH);
 
     if (!DsdtAddress)
@@ -471,7 +471,7 @@ AeBuildLocalTables (
         /* Complete the external FADT with the checksum */
 
         ExternalFadt->Header.Checksum = 0;
-        ExternalFadt->Header.Checksum = (UINT8) -AcpiTbChecksum (
+        ExternalFadt->Header.Checksum = (UINT8) -AcpiUtChecksum (
             (void *) ExternalFadt, ExternalFadt->Header.Length);
     }
     else if (AcpiGbl_UseHwReducedFadt)
@@ -551,7 +551,7 @@ AeBuildLocalTables (
         LocalTEST.Length = sizeof (ACPI_TABLE_HEADER);
 
         LocalTEST.Checksum = 0;
-        LocalTEST.Checksum = (UINT8) -AcpiTbChecksum (
+        LocalTEST.Checksum = (UINT8) -AcpiUtChecksum (
             (void *) &LocalTEST, LocalTEST.Length);
 
         /*
@@ -565,7 +565,7 @@ AeBuildLocalTables (
         LocalBADTABLE.Length = sizeof (ACPI_TABLE_HEADER);
 
         LocalBADTABLE.Checksum = 0;
-        LocalBADTABLE.Checksum = (UINT8) -AcpiTbChecksum (
+        LocalBADTABLE.Checksum = (UINT8) -AcpiUtChecksum (
             (void *) &LocalBADTABLE, LocalBADTABLE.Length);
     }
 
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.h b/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.h
index 88cbfc5c55..9fc8590b40 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.h
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aetables.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpiexec/aetests.c b/sys/contrib/dev/acpica/source/tools/acpiexec/aetests.c
index 4491186e1d..9153359ac0 100644
--- a/sys/contrib/dev/acpica/source/tools/acpiexec/aetests.c
+++ b/sys/contrib/dev/acpica/source/tools/acpiexec/aetests.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/acpihelp.h b/sys/contrib/dev/acpica/source/tools/acpihelp/acpihelp.h
index e6c778f2f7..ccc7162a0e 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/acpihelp.h
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/acpihelp.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaml.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaml.c
index a077caf2a5..3fe56850aa 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaml.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaml.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahamlops.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahamlops.c
index 76ca2b3ed7..71591587e0 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahamlops.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahamlops.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahasl.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahasl.c
index b77c875dfd..3057388379 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahasl.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahasl.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslkey.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslkey.c
index 068ef4690c..34c3f7465e 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslkey.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslkey.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslops.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslops.c
index df495032b0..085d774d29 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslops.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahaslops.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahdecode.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahdecode.c
index 150ef6c05b..bbe23cd8f4 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahdecode.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahdecode.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahgrammar.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahgrammar.c
index e12cc6dbec..7265552c8b 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahgrammar.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahgrammar.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpihelp/ahmain.c b/sys/contrib/dev/acpica/source/tools/acpihelp/ahmain.c
index 5310d60100..abd67ba2a9 100644
--- a/sys/contrib/dev/acpica/source/tools/acpihelp/ahmain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpihelp/ahmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -160,7 +160,7 @@ AhDisplayUsage (
     void);
 
 #define AH_UTILITY_NAME             "ACPI Help Utility"
-#define AH_SUPPORTED_OPTIONS        "adeghikmopstuvx^"
+#define AH_SUPPORTED_OPTIONS        "adeghikmopstuv^x"
 
 
 #if defined ACPI_OPTION
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/acpisrc.h b/sys/contrib/dev/acpica/source/tools/acpisrc/acpisrc.h
index 4cc19c731d..691a088f25 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/acpisrc.h
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/acpisrc.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/ascase.c b/sys/contrib/dev/acpica/source/tools/acpisrc/ascase.c
index f3946a8fef..382b7099da 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/ascase.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/ascase.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/asconvrt.c b/sys/contrib/dev/acpica/source/tools/acpisrc/asconvrt.c
index 24ff24cd0e..e331a46fb1 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/asconvrt.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/asconvrt.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -185,7 +185,7 @@ AsCountLines (
 
 #define MODULE_HEADER_BEGIN "/******************************************************************************\n *\n * Module Name:";
 #define MODULE_HEADER_END   " *****************************************************************************/\n\n"
-#define INTEL_COPYRIGHT     " * Copyright (C) 2000 - 2021, Intel Corp.\n"
+#define INTEL_COPYRIGHT     " * Copyright (C) 2000 - 2025, Intel Corp.\n"
 
 /* Opening signature of the Intel legal header */
 
@@ -1230,7 +1230,6 @@ AsTabify8 (
     char                    *NewSubBuffer;
     char                    *CommentEnd = NULL;
     UINT32                  SpaceCount = 0;
-    UINT32                  Column = 0;
     UINT32                  TabCount = 0;
     UINT32                  LastLineTabCount = 0;
     UINT32                  LastLineColumnStart = 0;
@@ -1246,7 +1245,6 @@ AsTabify8 (
             /* This is a standalone blank line */
 
             FirstNonBlank = NULL;
-            Column = 0;
             SpaceCount = 0;
             TabCount = 0;
             SubBuffer++;
@@ -1285,8 +1283,6 @@ AsTabify8 (
             }
         }
 
-        Column++;
-
         /* Check if we are in a comment */
 
         if ((SubBuffer[0] == '*') &&
@@ -1379,7 +1375,6 @@ AsTabify8 (
 
             FirstNonBlank = NULL;
             LastLineColumnStart = ThisColumnStart;
-            Column = 0;
             SpaceCount = 0;
         }
         else
@@ -1618,6 +1613,8 @@ AsInsertPrefix (
     int                     TrailingSpaces;
     char                    LowerKeyword[128];
     int                     KeywordLength;
+    char                    *LineStart;
+    BOOLEAN                 FoundPrefix;
 
 
     switch (Type)
@@ -1664,7 +1661,66 @@ AsInsertPrefix (
         {
             /* Make sure the keyword isn't already prefixed with the insert */
 
-            if (!strncmp (SubString - InsertLength, InsertString, InsertLength))
+            /* We find the beginning of the line and try to find the InsertString
+             * from LineStart up to SubBuffer (our keyword). If it's not there,
+             * we assume it doesn't have a prefix; this is a limitation, as having
+             * a keyword on another line is absolutely valid C.
+             */
+
+            LineStart = SubString;
+            FoundPrefix = FALSE;
+
+            /* Find the start of the line */
+
+            while (LineStart > Buffer)
+            {
+                if (*LineStart == '\n')
+                {
+                    LineStart++;
+                    break;
+                }
+
+                LineStart--;
+            }
+
+            /* Try to find InsertString from the start of the line up to SubBuffer */
+            /* Note that this algorithm is a bit naive. */
+
+            while (SubBuffer > LineStart)
+            {
+                if (*LineStart != *InsertString)
+                {
+                    LineStart++;
+                    continue;
+                }
+
+                if (strncmp (LineStart++, InsertString, InsertLength))
+                {
+                    continue;
+                }
+
+                FoundPrefix = TRUE;
+                LineStart += InsertLength - 1;
+
+                /* Now check if there's non-whitespace between InsertString and SubBuffer, as that
+                 * means it's not a valid prefix in this case. */
+
+                while (LineStart != SubBuffer)
+                {
+                    if (!strchr (" \t\r\n", *LineStart))
+                    {
+                        /* We found non-whitespace while traversing up to SubBuffer,
+                         * so this isn't a prefix.
+                         */
+                        FoundPrefix = FALSE;
+                        break;
+                    }
+
+                    LineStart++;
+                }
+            }
+
+            if (FoundPrefix)
             {
                 /* Add spaces if not already at the end-of-line */
 
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/asfile.c b/sys/contrib/dev/acpica/source/tools/acpisrc/asfile.c
index 41900a31fb..8578a30356 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/asfile.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/asfile.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/asmain.c b/sys/contrib/dev/acpica/source/tools/acpisrc/asmain.c
index 206feb4456..81e9f53047 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/asmain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/asmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/asremove.c b/sys/contrib/dev/acpica/source/tools/acpisrc/asremove.c
index 9ab6cb4b99..956fd51a8a 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/asremove.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/asremove.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/astable.c b/sys/contrib/dev/acpica/source/tools/acpisrc/astable.c
index 6cad24d0ce..367f3d057f 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/astable.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/astable.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -197,7 +197,7 @@ ACPI_STRING_TABLE           StandardDataTypes[] = {
 char                        EmptyHeader[] = "";
 char                        DualLicenseHeader[] =
 "/*\n"
-" * Copyright (C) 2000 - 2021, Intel Corp.\n"
+" * Copyright (C) 2000 - 2025, Intel Corp.\n"
 " * All rights reserved.\n"
 " *\n"
 " * Redistribution and use in source and binary forms, with or without\n"
@@ -306,6 +306,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_CONVERSION_TABLE",               SRC_TYPE_STRUCT},
     {"ACPI_CPU_FLAGS",                      SRC_TYPE_SIMPLE},
     {"ACPI_CREATE_FIELD_INFO",              SRC_TYPE_STRUCT},
+    {"ACPI_DATA_TABLE_MAPPING",             SRC_TYPE_STRUCT},
     {"ACPI_DB_ARGUMENT_INFO",               SRC_TYPE_STRUCT},
     {"ACPI_DB_COMMAND_HELP",                SRC_TYPE_STRUCT},
     {"ACPI_DB_COMMAND_INFO",                SRC_TYPE_STRUCT},
@@ -339,6 +340,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_FIND_CONTEXT",                   SRC_TYPE_STRUCT},
     {"ACPI_FIXED_EVENT_HANDLER",            SRC_TYPE_STRUCT},
     {"ACPI_FIXED_EVENT_INFO",               SRC_TYPE_STRUCT},
+    {"ACPI_FFH_INFO",                       SRC_TYPE_STRUCT},
     {"ACPI_GBL_EVENT_HANDLER",              SRC_TYPE_SIMPLE},
     {"ACPI_GENERIC_ADDRESS",                SRC_TYPE_STRUCT},
     {"ACPI_GENERIC_STATE",                  SRC_TYPE_UNION},
@@ -373,6 +375,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_LPIT_HEADER",                    SRC_TYPE_STRUCT},
     {"ACPI_LPIT_IO",                        SRC_TYPE_STRUCT},
     {"ACPI_LPIT_NATIVE",                    SRC_TYPE_STRUCT},
+    {"ACPI_MEM_MAPPING",                    SRC_TYPE_STRUCT},
     {"ACPI_MEM_SPACE_CONTEXT",              SRC_TYPE_STRUCT},
     {"ACPI_MEMORY_ATTRIBUTE",               SRC_TYPE_STRUCT},
     {"ACPI_MEMORY_LIST",                    SRC_TYPE_STRUCT},
@@ -465,6 +468,10 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_RASF_PARAMETER_BLOCK",           SRC_TYPE_STRUCT},
     {"ACPI_RASF_PATROL_SCRUB_PARAMETER",    SRC_TYPE_STRUCT},
     {"ACPI_RASF_SHARED_MEMORY",             SRC_TYPE_STRUCT},
+    {"ACPI_RAS2_PARAMETER_BLOCK",           SRC_TYPE_STRUCT},
+    {"ACPI_RAS2_PATROL_SCRUB_PARAM",        SRC_TYPE_STRUCT},
+    {"ACPI_RAS2_LA2PA_TRANSLATION_PARAM",   SRC_TYPE_STRUCT},
+    {"ACPI_RAS2_SHMEM",                     SRC_TYPE_STRUCT},
     {"ACPI_REGION_WALK_INFO",               SRC_TYPE_STRUCT},
     {"ACPI_REPAIR_FUNCTION",                SRC_TYPE_SIMPLE},
     {"ACPI_REPAIR_INFO",                    SRC_TYPE_STRUCT},
@@ -530,6 +537,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_STRING",                         SRC_TYPE_SIMPLE},
     {"ACPI_STRING_TABLE",                   SRC_TYPE_STRUCT},
     {"ACPI_SUBTABLE_HEADER",                SRC_TYPE_STRUCT},
+    {"ACPI_SUBTBL_HDR_16",                  SRC_TYPE_STRUCT},
     {"ACPI_SYSTEM_INFO",                    SRC_TYPE_STRUCT},
     {"ACPI_TABLE_DESC",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_HANDLER",                  SRC_TYPE_SIMPLE},
@@ -648,16 +656,18 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_TABLE_BERT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_BGRT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_BOOT",                     SRC_TYPE_STRUCT},
+    {"ACPI_TABLE_CCEL",                     SRC_TYPE_STRUCT},
+    {"ACPI_TABLE_CDAT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_CEDT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_CPEP",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_CSRT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_DBG2",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_DBGP",                     SRC_TYPE_STRUCT},
-    {"ACPI_TABLE_CEDT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_DMAR",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_DRTM",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_ECDT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_EINJ",                     SRC_TYPE_STRUCT},
+    {"ACPI_TABLE_ERDT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_ERST",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_FACS",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_FADT",                     SRC_TYPE_STRUCT},
@@ -672,7 +682,9 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_TABLE_MADT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_MCFG",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_MCHI",                     SRC_TYPE_STRUCT},
+    {"ACPI_TABLE_MPAM",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_MPST",                     SRC_TYPE_STRUCT},
+    {"ACPI_TABLE_MRRM",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_MSCT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_MSDM",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_NFIT",                     SRC_TYPE_STRUCT},
@@ -686,7 +698,6 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_TABLE_RGRT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_RSDP",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_RSDT",                     SRC_TYPE_STRUCT},
-    {"ACPI_TABLE_MCHI",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_S3PT",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_SBST",                     SRC_TYPE_STRUCT},
     {"ACPI_TABLE_SDEV",                     SRC_TYPE_STRUCT},
@@ -719,12 +730,14 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_AEST_MEMORY",                    SRC_TYPE_STRUCT},
     {"ACPI_AEST_NODE_INTERFACE",            SRC_TYPE_STRUCT},
     {"ACPI_AEST_NODE_INTERRUPT",            SRC_TYPE_STRUCT},
+    {"ACPI_AEST_NODE_INTERRUPT_V2",         SRC_TYPE_STRUCT},
     {"ACPI_AEST_PROCESSOR",                 SRC_TYPE_STRUCT},
     {"ACPI_AEST_PROCESSOR_CACHE",           SRC_TYPE_STRUCT},
     {"ACPI_AEST_PROCESSOR_GENERIC",         SRC_TYPE_STRUCT},
     {"ACPI_AEST_PROCESSOR_TLB",             SRC_TYPE_STRUCT},
     {"ACPI_AEST_SMMU",                      SRC_TYPE_STRUCT},
     {"ACPI_AEST_VENDOR",                    SRC_TYPE_STRUCT},
+    {"ACPI_AEST_VENDOR_V2",                 SRC_TYPE_STRUCT},
     {"ACPI_ASF_ADDRESS",                    SRC_TYPE_STRUCT},
     {"ACPI_ASF_ALERT",                      SRC_TYPE_STRUCT},
     {"ACPI_ASF_ALERT_DATA",                 SRC_TYPE_STRUCT},
@@ -754,6 +767,18 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_DRTM_VTABLE_LIST",               SRC_TYPE_STRUCT},
     {"ACPI_EINJ_ENTRY",                     SRC_TYPE_STRUCT},
     {"ACPI_EINJ_TRIGGER",                   SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_RMDD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_CACD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_DACD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_DACD_PATHS",                SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_CMRC",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_MMRC",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_MARC",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_CARC",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_CMRD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_IBRD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_IBAD",                      SRC_TYPE_STRUCT},
+    {"ACPI_ERDT_CARD",                      SRC_TYPE_STRUCT},
     {"ACPI_ERST_ENTRY",                     SRC_TYPE_STRUCT},
     {"ACPI_ERST_INFO",                      SRC_TYPE_STRUCT},
     {"ACPI_FPDT_HEADER",                    SRC_TYPE_STRUCT},
@@ -830,6 +855,10 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_MADT_MULTIPROC_WAKEUP_MAILBOX",  SRC_TYPE_STRUCT},
     {"ACPI_MADT_PROCESSOR_APIC",            SRC_TYPE_STRUCT},
     {"ACPI_MCFG_ALLOCATION",                SRC_TYPE_STRUCT},
+    {"ACPI_MPAM_MSC_NODE",                  SRC_TYPE_STRUCT},
+    {"ACPI_MPAM_RESOURCE_LOCATOR",          SRC_TYPE_STRUCT},
+    {"ACPI_MPAM_RESOURCE_NODE",             SRC_TYPE_STRUCT},
+    {"ACPI_MRRM_MEM_RANGE_ENTRY",           SRC_TYPE_STRUCT},
     {"ACPI_MPST_COMPONENT",                 SRC_TYPE_STRUCT},
     {"ACPI_MPST_DATA_HDR",                  SRC_TYPE_STRUCT},
     {"ACPI_MPST_POWER_DATA",                SRC_TYPE_STRUCT},
@@ -846,36 +875,18 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_NFIT_MEMORY_MAP",                SRC_TYPE_STRUCT},
     {"ACPI_NFIT_SMBIOS",                    SRC_TYPE_STRUCT},
     {"ACPI_NFIT_SYSTEM_ADDRESS",            SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_CONFIG",    SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A",  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B",  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C",  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D",  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_DEVICE_SPECIFIC_HDR",       SRC_TYPE_STRUCT},
     {"ACPI_NHLT_ENDPOINT",                  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_ENDPOINT_COUNT",            SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_CONFIG",                    SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_GENDEVICE_CONFIG",          SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_MICDEVICE_CONFIG",          SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_VENDOR_MIC_CONFIG",         SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_VENDOR_MICDEVICE_CONFIG",   SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_DEVICE_CONFIG",             SRC_TYPE_UNION},
+    {"ACPI_NHLT_WAVE_FORMATEXT",            SRC_TYPE_STRUCT},
     {"ACPI_NHLT_FORMAT_CONFIG",             SRC_TYPE_STRUCT},
     {"ACPI_NHLT_FORMATS_CONFIG",            SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_LINUX_SPECIFIC_COUNT",      SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_LINUX_SPECIFIC_DATA",       SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_LINUX_SPECIFIC_DATA_B",     SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG", SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION",SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_RENDER_DEVICE_SPECIFIC_CONFIG", SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG", SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_TABLE_TERMINATOR",          SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_WAVE_EXTENSIBLE",           SRC_TYPE_STRUCT},
-    {"ACPI_TABLE_NHLT_ENDPOINT",            SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_VENDOR_MIC_DEVICE_SPECIFIC_CONFIG",  SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG",SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION",         SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG",SRC_TYPE_STRUCT},
-    {"ACPI_TABLE_NHLT_ENDPOINT_COUNT",      SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_TABLE_TERMINATOR",          SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_VENDOR_MIC_CONFIG",         SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_VENDOR_MIC_COUNT",          SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_VENDOR_MIC_DEVICE_SPECIFIC_CONFIG",     SRC_TYPE_STRUCT},
-    {"ACPI_NHLT_WAVE_EXTENSIBLE",           SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_DEVICE_INFO",               SRC_TYPE_STRUCT},
+    {"ACPI_NHLT_DEVICES_INFO",              SRC_TYPE_STRUCT},
     {"ACPI_PCCT_EXT_PCC_SHARED_MEMORY",     SRC_TYPE_STRUCT},
     {"ACPI_PCCT_HW_REDUCED",                SRC_TYPE_STRUCT},
     {"ACPI_PCCT_HW_REDUCED_TYPE2",          SRC_TYPE_STRUCT},
@@ -888,7 +899,6 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_PHAT_HEADER",                    SRC_TYPE_STRUCT},
     {"ACPI_PHAT_VERSION_DATA",              SRC_TYPE_STRUCT},
     {"ACPI_PHAT_VERSION_ELEMENT",           SRC_TYPE_STRUCT},
-    {"ACPI_PHAT_VERSION_ELEMENT",           SRC_TYPE_STRUCT},
     {"ACPI_PHAT_HEALTH_DATA",               SRC_TYPE_STRUCT},
     {"ACPI_PMTT_CONTROLLER",                SRC_TYPE_STRUCT},
     {"ACPI_PMTT_HEADER",                    SRC_TYPE_STRUCT},
@@ -919,6 +929,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"ACPI_SRAT_GENERIC_AFFINITY",          SRC_TYPE_STRUCT},
     {"ACPI_SRAT_MEM_AFFINITY",              SRC_TYPE_STRUCT},
     {"ACPI_SRAT_X2APIC_CPU_AFFINITY",       SRC_TYPE_STRUCT},
+    {"ACPI_SRAT_RINTC_AFFINITY",            SRC_TYPE_STRUCT},
     {"ACPI_TABLE_TCPA_CLIENT",              SRC_TYPE_STRUCT},
     {"ACPI_TABLE_TCPA_SERVER",              SRC_TYPE_STRUCT},
     {"ACPI_TPM2_TRAILER",                   SRC_TYPE_STRUCT},
@@ -958,6 +969,7 @@ ACPI_TYPED_IDENTIFIER_TABLE           AcpiIdentifiers[] = {
     {"AH_ASL_KEYWORD",                      SRC_TYPE_STRUCT},
     {"AH_DEVICE_ID",                        SRC_TYPE_STRUCT},
     {"AH_PREDEFINED_NAME",                  SRC_TYPE_STRUCT},
+    {"AH_TABLE",                            SRC_TYPE_STRUCT},
     {"AH_UUID",                             SRC_TYPE_STRUCT},
 
     /* AcpiXtract utility */
@@ -1248,8 +1260,8 @@ ACPI_CONVERSION_TABLE       LicenseConversionTable =
 
 ACPI_STRING_TABLE           CustomReplacements[] =
 {
-    {"(c) 1999 - 2020",     "(c) 1999 - 2021",         REPLACE_WHOLE_WORD}, /* Main ACPICA source */
-    {"(c) 2006 - 2020",     "(c) 2006 - 2021",         REPLACE_WHOLE_WORD}, /* Test suites */
+    {"(c) 1999 - 2025",     "(c) 1999 - 2025",         REPLACE_WHOLE_WORD}, /* Main ACPICA source */
+    {"(c) 2006 - 2023",     "(c) 2006 - 2025",         REPLACE_WHOLE_WORD}, /* Test suites */
 
 #if 0
     {"SUPPORT, ASSISTANCE", "SUPPORT, ASSISTANCE",     REPLACE_WHOLE_WORD}, /* Fix intel header */
diff --git a/sys/contrib/dev/acpica/source/tools/acpisrc/asutils.c b/sys/contrib/dev/acpica/source/tools/acpisrc/asutils.c
index b1cac273bd..ae788e7d13 100644
--- a/sys/contrib/dev/acpica/source/tools/acpisrc/asutils.c
+++ b/sys/contrib/dev/acpica/source/tools/acpisrc/asutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.c b/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.c
index 6e213251d7..1760422a2e 100644
--- a/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.c
+++ b/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.c
@@ -9,7 +9,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -186,6 +186,7 @@ AxExtractTables (
     int                     Status = 0;
     unsigned int            State = AX_STATE_FIND_HEADER;
 
+    memset (UpperSignature, 0, sizeof(UpperSignature));
 
     /* Open input in text mode, output is in binary mode */
 
@@ -204,7 +205,7 @@ AxExtractTables (
 
     if (Signature)
     {
-        strncpy (UpperSignature, Signature, ACPI_NAMESEG_SIZE);
+        memcpy (UpperSignature, Signature, ACPI_NAMESEG_SIZE);
         AcpiUtStrupr (UpperSignature);
 
         /* Are there enough instances of the table to continue? */
@@ -212,7 +213,8 @@ AxExtractTables (
         AxNormalizeSignature (UpperSignature);
         Instances = AxCountTableInstances (InputPathname, UpperSignature);
 
-        if (Instances < MinimumInstances)
+        if (Instances < MinimumInstances ||
+            (Instances == 0 && MinimumInstances == AX_OPTIONAL_TABLES))
         {
             printf ("Table [%s] was not found in %s\n",
                 UpperSignature, InputPathname);
@@ -561,7 +563,7 @@ AxListAllTables (
     FILE                    *InputFile;
     unsigned char           Header[48];
     UINT32                  ByteCount = 0;
-    int                     ThisLineByteCount;
+    INT32                   ThisLineByteCount;
     unsigned int            State = AX_STATE_FIND_HEADER;
 
 
diff --git a/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.h b/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.h
index c852a80dc1..2a3bcf6d02 100644
--- a/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.h
+++ b/sys/contrib/dev/acpica/source/tools/acpixtract/acpixtract.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpixtract/axmain.c b/sys/contrib/dev/acpica/source/tools/acpixtract/axmain.c
index 2d41c85943..54cc22bf3e 100644
--- a/sys/contrib/dev/acpica/source/tools/acpixtract/axmain.c
+++ b/sys/contrib/dev/acpica/source/tools/acpixtract/axmain.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/acpixtract/axutils.c b/sys/contrib/dev/acpica/source/tools/acpixtract/axutils.c
index cdb22b54d3..03bc7b6d0d 100644
--- a/sys/contrib/dev/acpica/source/tools/acpixtract/axutils.c
+++ b/sys/contrib/dev/acpica/source/tools/acpixtract/axutils.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -680,7 +680,7 @@ AxDumpTableHeader (
 
     /* RSDP has an oddball signature and header */
 
-    if (!strncmp (TableHeader->Signature, "RSD PTR ", 8))
+    if (ACPI_VALIDATE_RSDP_SIG (TableHeader->Signature))
     {
         AxCheckAscii ((char *) &Header[9], 6);
 
diff --git a/sys/contrib/dev/acpica/source/tools/efihello/efihello.c b/sys/contrib/dev/acpica/source/tools/efihello/efihello.c
index a9b169a401..daa12fa996 100644
--- a/sys/contrib/dev/acpica/source/tools/efihello/efihello.c
+++ b/sys/contrib/dev/acpica/source/tools/efihello/efihello.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/examples/examples.c b/sys/contrib/dev/acpica/source/tools/examples/examples.c
index c27d907173..b3bff9beb3 100644
--- a/sys/contrib/dev/acpica/source/tools/examples/examples.c
+++ b/sys/contrib/dev/acpica/source/tools/examples/examples.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/examples/examples.h b/sys/contrib/dev/acpica/source/tools/examples/examples.h
index fc61502f0d..88f520a63c 100644
--- a/sys/contrib/dev/acpica/source/tools/examples/examples.h
+++ b/sys/contrib/dev/acpica/source/tools/examples/examples.h
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/examples/exstubs.c b/sys/contrib/dev/acpica/source/tools/examples/exstubs.c
index cb3b0049ae..aede01ee0c 100644
--- a/sys/contrib/dev/acpica/source/tools/examples/exstubs.c
+++ b/sys/contrib/dev/acpica/source/tools/examples/exstubs.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
diff --git a/sys/contrib/dev/acpica/source/tools/examples/extables.c b/sys/contrib/dev/acpica/source/tools/examples/extables.c
index 6571d16a5a..090876e61d 100644
--- a/sys/contrib/dev/acpica/source/tools/examples/extables.c
+++ b/sys/contrib/dev/acpica/source/tools/examples/extables.c
@@ -8,7 +8,7 @@
  *
  * 1. Copyright Notice
  *
- * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
+ * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
  * All rights reserved.
  *
  * 2. License
@@ -315,19 +315,19 @@ ExInitializeAcpiTables (
     /* Set new checksums for the modified tables */
 
     Rsdp->Checksum = 0;
-    Rsdp->Checksum = (UINT8) -AcpiTbChecksum (
+    Rsdp->Checksum = (UINT8) -AcpiUtChecksum (
         (void *) RsdpCode, ACPI_RSDP_CHECKSUM_LENGTH);
 
     Rsdt->Header.Checksum = 0;
-    Rsdt->Header.Checksum = (UINT8) -AcpiTbChecksum (
+    Rsdt->Header.Checksum = (UINT8) -AcpiUtChecksum (
         (void *) Rsdt, Rsdt->Header.Length);
 
     Xsdt->Header.Checksum = 0;
-    Xsdt->Header.Checksum =  (UINT8) -AcpiTbChecksum (
+    Xsdt->Header.Checksum =  (UINT8) -AcpiUtChecksum (
         (void *) Xsdt, Xsdt->Header.Length);
 
     Fadt->Header.Checksum = 0;
-    Fadt->Header.Checksum =  (UINT8) -AcpiTbChecksum (
+    Fadt->Header.Checksum =  (UINT8) -AcpiUtChecksum (
         (void *) Fadt, Fadt->Header.Length);
 }
 
diff --git a/sys/dev/acpica/Makefile b/sys/dev/acpica/Makefile
index fa462852df..404d472ffe 100644
--- a/sys/dev/acpica/Makefile
+++ b/sys/dev/acpica/Makefile
@@ -53,7 +53,7 @@ SRCS+=	rsaddr.c rscalc.c rscreate.c rsdump.c rsdumpinfo.c rsinfo.c rsio.c
 SRCS+=	rsirq.c rslist.c rsmemory.c rsmisc.c rsserial.c rsutils.c
 SRCS+=	rsxface.c tbdata.c tbfadt.c tbfind.c tbinstal.c tbprint.c
 SRCS+=	tbutils.c tbxface.c tbxfload.c tbxfroot.c
-SRCS+=	utalloc.c utascii.c utbuffer.c utaddress.c utcopy.c
+SRCS+=	utalloc.c utascii.c utbuffer.c utaddress.c utcksum.c utcopy.c
 SRCS+=	utdebug.c utdecode.c utdelete.c uterror.c uteval.c utexcep.c
 SRCS+=	utglobal.c uthex.c utids.c utinit.c utlock.c
 SRCS+=	utmath.c utmisc.c utmutex.c utnonansi.c
diff --git a/usr.sbin/acpi/acpidump/Makefile b/usr.sbin/acpi/acpidump/Makefile
index 650e6b0fee..44ad9bd2f3 100644
--- a/usr.sbin/acpi/acpidump/Makefile
+++ b/usr.sbin/acpi/acpidump/Makefile
@@ -24,6 +24,7 @@ SRCS+=	\
 	tbxfroot.c \
 	utascii.c \
 	utbuffer.c \
+	utcksum.c \
 	utdebug.c \
 	utexcep.c \
 	utglobal.c \
diff --git a/usr.sbin/acpi/acpiexec/Makefile b/usr.sbin/acpi/acpiexec/Makefile
index 18c8e56a34..596c04c79a 100644
--- a/usr.sbin/acpi/acpiexec/Makefile
+++ b/usr.sbin/acpi/acpiexec/Makefile
@@ -184,6 +184,7 @@ SRCS+=	\
 	utalloc.c \
 	utbuffer.c \
 	utcache.c \
+	utcksum.c \
 	utcopy.c \
 	utdebug.c \
 	utdecode.c \
diff --git a/usr.sbin/acpi/iasl/Makefile b/usr.sbin/acpi/iasl/Makefile
index b6a1a1e34c..34af54fd10 100644
--- a/usr.sbin/acpi/iasl/Makefile
+++ b/usr.sbin/acpi/iasl/Makefile
@@ -198,6 +198,7 @@ SRCS=	\
 	utascii.c \
 	utbuffer.c \
 	utcache.c \
+	utcksum.c \
 	utcopy.c \
 	utdebug.c \
 	utdecode.c \
diff --git a/usr.sbin/acpi/iasl/iasl.8 b/usr.sbin/acpi/iasl/iasl.8
index 83e0810646..1b59cbb38e 100644
--- a/usr.sbin/acpi/iasl/iasl.8
+++ b/usr.sbin/acpi/iasl/iasl.8
@@ -28,7 +28,7 @@
 .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd May 29, 2020
+.Dd October 2, 2025
 .Dt IASL 8
 .Os
 .Sh NAME
@@ -78,6 +78,8 @@ Obtain the DSDT from the current system if no input file has it.
 Force the disassembler to assume the table contains valid AML.
 .It Fl dl
 Emit legacy ASL code only (no C-style operators).
+.It Fl ds Ar signature(4)
+Specify a table signature(4) (CDAT table only).
 .It Fl dv
 Set verbose option.
 .It Fl e Ar file ...
@@ -112,6 +114,8 @@ When compiling, ignore NoOp operators.
 .It Fl l
 When compiling, create mixed listing file (ASL source and AML) (*.lst).
 When disassembling, disassemble to mixed ASL and AML code.
+.It Fl ld
+Disable deterministic output.
 .It Fl li
 Create preprocessed output file (*.i).
 .It Fl lm
-- 
2.45.2

