Re: git: 07c64d74917e - main - acpica: Import ACPICA 20230628

From: Baptiste Daroussin <bapt_at_freebsd.org>
Date: Wed, 31 Jan 2024 12:24:59 UTC
Hello,

Either this one or the previous import is breaking arm64 build

--- acpi_iort.o ---
/home/bapt/worktrees/main/sys/arm64/acpica/acpi_iort.c:103:4: error: field
'data' with variable sized type 'union (unnamed union at
/home/bapt/worktrees/main/sys/arm64/acpica/acpi_iort.c:98:2
)' not at the end of a struct or class is a GNU extension
[-Werror,-Wgnu-variable-sized-type-not-at-end]
  103 |         } data;
        |           ^

best regards,
Bapt

On Wed, Jan 31, 2024 at 04:06:11AM +0000, Jung-uk Kim wrote:
> The branch main has been updated by jkim:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=07c64d74917e7c8ca61c77413dbd533390e7dca7
> 
> commit 07c64d74917e7c8ca61c77413dbd533390e7dca7
> Author:     Jung-uk Kim <jkim@FreeBSD.org>
> AuthorDate: 2024-01-30 21:49:20 +0000
> Commit:     Jung-uk Kim <jkim@FreeBSD.org>
> CommitDate: 2024-01-31 03:58:33 +0000
> 
>     acpica: Import ACPICA 20230628
>     
>     (cherry picked from commit ef3ba9d625927fd4592a8c071698a562821485bd)
> ---
>  sys/contrib/dev/acpica/changes.txt                 |  30 ++++
>  sys/contrib/dev/acpica/common/ahpredef.c           |   1 +
>  sys/contrib/dev/acpica/common/dmtable.c            |  26 ++++
>  sys/contrib/dev/acpica/common/dmtbdump2.c          |  83 +++++++++-
>  sys/contrib/dev/acpica/common/dmtbinfo1.c          |   2 +-
>  sys/contrib/dev/acpica/common/dmtbinfo2.c          | 173 ++++++++++++++++++++-
>  sys/contrib/dev/acpica/compiler/aslrestype2.c      |   6 +-
>  sys/contrib/dev/acpica/compiler/dttable2.c         |  67 +++++++-
>  sys/contrib/dev/acpica/compiler/dttemplate.h       |  51 ++++--
>  .../dev/acpica/components/debugger/dbcmds.c        |  59 ++++++-
>  .../dev/acpica/components/debugger/dbinput.c       |   8 +
>  .../dev/acpica/components/disassembler/dmresrcl.c  |   2 +-
>  .../dev/acpica/components/dispatcher/dswstate.c    |   4 +-
>  sys/contrib/dev/acpica/components/events/evevent.c |  11 +-
>  .../dev/acpica/components/executer/exserial.c      |   3 +-
>  .../dev/acpica/components/hardware/hwsleep.c       |  11 --
>  .../dev/acpica/components/parser/psopcode.c        |   2 +-
>  .../dev/acpica/components/resources/rsaddr.c       |   2 +-
>  .../dev/acpica/components/resources/rscreate.c     |   8 +-
>  .../dev/acpica/components/resources/rsdumpinfo.c   |   8 +-
>  .../dev/acpica/components/resources/rsirq.c        |  12 +-
>  .../dev/acpica/components/utilities/utdebug.c      |   5 +
>  .../dev/acpica/components/utilities/utglobal.c     |   1 -
>  sys/contrib/dev/acpica/include/acdebug.h           |   4 +
>  sys/contrib/dev/acpica/include/acdisasm.h          |  13 ++
>  sys/contrib/dev/acpica/include/acglobal.h          |   1 +
>  sys/contrib/dev/acpica/include/aclocal.h           |  29 ++--
>  sys/contrib/dev/acpica/include/acnames.h           |   1 +
>  sys/contrib/dev/acpica/include/acpixf.h            |   2 +-
>  sys/contrib/dev/acpica/include/acpredef.h          |   3 +
>  sys/contrib/dev/acpica/include/acrestyp.h          |   8 +-
>  sys/contrib/dev/acpica/include/actbinfo.h          |  15 +-
>  sys/contrib/dev/acpica/include/actbl1.h            |   4 +-
>  sys/contrib/dev/acpica/include/actbl2.h            |  81 +++++++++-
>  sys/contrib/dev/acpica/include/actbl3.h            |   4 +-
>  sys/contrib/dev/acpica/include/actypes.h           |   3 +-
>  sys/contrib/dev/acpica/include/amlresrc.h          |   2 +-
>  sys/contrib/dev/acpica/include/platform/acgcc.h    |   2 +-
>  38 files changed, 651 insertions(+), 96 deletions(-)
> 
> diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
> index af896ec7e0b0..edcc674d90ab 100644
> --- a/sys/contrib/dev/acpica/changes.txt
> +++ b/sys/contrib/dev/acpica/changes.txt
> @@ -1,4 +1,34 @@
>  ----------------------------------------
> +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
> diff --git a/sys/contrib/dev/acpica/common/ahpredef.c b/sys/contrib/dev/acpica/common/ahpredef.c
> index 97655cfab6f7..38653468560e 100644
> --- a/sys/contrib/dev/acpica/common/ahpredef.c
> +++ b/sys/contrib/dev/acpica/common/ahpredef.c
> @@ -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/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c
> index 0d7cdceb5b4a..80aa700bb5e7 100644
> --- a/sys/contrib/dev/acpica/common/dmtable.c
> +++ b/sys/contrib/dev/acpica/common/dmtable.c
> @@ -430,6 +430,9 @@ static const char           *AcpiDmMadtSubnames[] =
>      "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 */
>  };
> @@ -669,6 +672,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 */
> +};
> +
>  
>  /*******************************************************************************
>   *
> @@ -1190,6 +1201,7 @@ AcpiDmDumpTable (
>          case ACPI_DMT_NFIT:
>          case ACPI_DMT_NHLT1e:
>          case ACPI_DMT_PHAT:
> +        case ACPI_DMT_RHCT:
>  
>              ByteLength = 2;
>              break;
> @@ -2169,6 +2181,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/common/dmtbdump2.c b/sys/contrib/dev/acpica/common/dmtbdump2.c
> index 61f62fee8315..6c94ac7bf04a 100644
> --- a/sys/contrib/dev/acpica/common/dmtbdump2.c
> +++ b/sys/contrib/dev/acpica/common/dmtbdump2.c
> @@ -990,6 +990,61 @@ 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:
>  
>              if ((Subtable->Type >= ACPI_MADT_TYPE_RESERVED) &&
> @@ -1021,7 +1076,7 @@ AcpiDmDumpMadt (
>              /* Dump the OEM data */
>  
>              Status = AcpiDmDumpTable (Length, Offset, ACPI_CAST_PTR (UINT8, Table) + Offset,
> -                Subtable->Length - sizeof (ACPI_SUBTABLE_HEADER), AcpiDmTableInfoMadt17);
> +                Subtable->Length - sizeof (ACPI_SUBTABLE_HEADER), AcpiDmTableInfoMadt128);
>              if (ACPI_FAILURE (Status))
>              {
>                  return;
> @@ -1058,16 +1113,16 @@ NextSubtable:
>          Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable,
>              Subtable->Length);
>  
> -        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);
> -
>          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);
>      }
>  }
>  
> @@ -2765,6 +2820,8 @@ AcpiDmDumpRhct (
>      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);
> @@ -2850,6 +2907,20 @@ AcpiDmDumpRhct (
>                           (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;
>          }
> diff --git a/sys/contrib/dev/acpica/common/dmtbinfo1.c b/sys/contrib/dev/acpica/common/dmtbinfo1.c
> index 058bb2e72215..d53ec515cbde 100644
> --- a/sys/contrib/dev/acpica/common/dmtbinfo1.c
> +++ b/sys/contrib/dev/acpica/common/dmtbinfo1.c
> @@ -947,7 +947,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoDmar4[] =
>  {
>      {ACPI_DMT_UINT24,   ACPI_DMAR4_OFFSET (Reserved[0]),            "Reserved", 0},
>      {ACPI_DMT_UINT8,    ACPI_DMAR4_OFFSET (DeviceNumber),           "Device Number", 0},
> -    {ACPI_DMT_STRING,   ACPI_DMAR4_OFFSET (u.DeviceName[0]),          "Device Name", 0},
> +    {ACPI_DMT_STRING,   ACPI_DMAR4_OFFSET (DeviceName[0]),          "Device Name", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> diff --git a/sys/contrib/dev/acpica/common/dmtbinfo2.c b/sys/contrib/dev/acpica/common/dmtbinfo2.c
> index e1e325dec277..9a3bf952fe40 100644
> --- a/sys/contrib/dev/acpica/common/dmtbinfo2.c
> +++ b/sys/contrib/dev/acpica/common/dmtbinfo2.c
> @@ -678,8 +678,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
> @@ -926,12 +924,155 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt16[] =
>     ACPI_DMT_TERMINATOR
>  };
>  
> -/* 17: OEM data structure */
> +/* 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_UINT32,   ACPI_MADT27_OFFSET (Flags),                 "Flags", 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
> +   ACPI_DMT_TERMINATOR
>  };
>  
>  /*******************************************************************************
> @@ -2080,7 +2221,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoRgrt0[] =
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoRhct[] =
>  {
> -    {ACPI_DMT_UINT32,   ACPI_RHCT_OFFSET (Reserved),         "Reserved", 0},
> +    {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},
> @@ -2092,7 +2233,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoRhct[] =
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctNodeHdr[] =
>  {
> -    {ACPI_DMT_UINT16,    ACPI_RHCTH_OFFSET (Type),            "Subtable Type", 0},
> +    {ACPI_DMT_RHCT,      ACPI_RHCTH_OFFSET (Type),            "Subtable Type", 0},
>      {ACPI_DMT_UINT16,    ACPI_RHCTH_OFFSET (Length),          "Length", 0},
>      {ACPI_DMT_UINT16,    ACPI_RHCTH_OFFSET (Revision),        "Revision", 0},
>      ACPI_DMT_TERMINATOR
> @@ -2116,6 +2257,26 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoRhctIsaPad[] =
>      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[] =
> diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2.c b/sys/contrib/dev/acpica/compiler/aslrestype2.c
> index ab021866cd02..9406a2172481 100644
> --- a/sys/contrib/dev/acpica/compiler/aslrestype2.c
> +++ b/sys/contrib/dev/acpica/compiler/aslrestype2.c
> @@ -337,7 +337,7 @@ RsDoInterruptDescriptor (
>      Descriptor->ExtendedIrq.InterruptCount  = 0;
>  
>      Rover = ACPI_CAST_PTR (AML_RESOURCE,
> -        (&(Descriptor->ExtendedIrq.u.Interrupts[0])));
> +        (&(Descriptor->ExtendedIrq.Interrupts[0])));
>  
>      /* Process all child initialization nodes */
>  
> @@ -466,7 +466,7 @@ RsDoInterruptDescriptor (
>  
>                  RsCreateDwordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
>                      CurrentByteOffset +
> -                    ASL_RESDESC_OFFSET (ExtendedIrq.u.Interrupts[0]));
> +                    ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]));
>              }
>          }
>  
> @@ -494,7 +494,7 @@ RsDoInterruptDescriptor (
>      }
>  
>      Rnode->BufferLength =
> -        (ASL_RESDESC_OFFSET (ExtendedIrq.u.Interrupts[0]) -
> +        (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) -
>          ASL_RESDESC_OFFSET (ExtendedIrq.DescriptorType))
>          + OptionIndex + StringLength;
>      return (Rnode);
> diff --git a/sys/contrib/dev/acpica/compiler/dttable2.c b/sys/contrib/dev/acpica/compiler/dttable2.c
> index 9046851e313c..af6ac5f6319e 100644
> --- a/sys/contrib/dev/acpica/compiler/dttable2.c
> +++ b/sys/contrib/dev/acpica/compiler/dttable2.c
> @@ -371,11 +371,66 @@ 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:
>  
>              if (MadtHeader->Type >= ACPI_MADT_TYPE_OEM_RESERVED)
>              {
> -                InfoTable = AcpiDmTableInfoMadt17;
> +                InfoTable = AcpiDmTableInfoMadt128;
>              }
>              else
>              {
> @@ -2190,6 +2245,16 @@ DtCompileRhct (
>              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");
> diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.h b/sys/contrib/dev/acpica/compiler/dttemplate.h
> index 755da40224e4..c97a8ed24eee 100644
> --- a/sys/contrib/dev/acpica/compiler/dttemplate.h
> +++ b/sys/contrib/dev/acpica/compiler/dttemplate.h
> @@ -1128,11 +1128,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,0x60,0x02,0x00,0x00,  /* 00000000    "APIC...." */
> +    0x05,0x69,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" */
> -    0x13,0x11,0x20,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "..  ...." */
> +    0x31,0x03,0x22,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "1." ...." */
>      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    "........" */
> @@ -1173,7 +1173,37 @@ const unsigned char TemplateMadt[] =
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000150    "........" */
>      0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,  /* 00000158    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000160    "........" */
> -    0x00,0x00                                 /* 00000168    ".."       */
> +    0x00,0x00,0x11,0x0F,0x01,0x01,0x00,0x00,  /* 00000168    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,  /* 00000170    "........" */
> +    0x00,0x12,0x17,0x01,0x00,0x14,0xE0,0x1F,  /* 00000178    "........" */
> +    0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x03,  /* 00000180    "........" */
> +    0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,  /* 00000188    "........" */
> +    0x13,0x15,0x01,0x80,0x00,0x00,0xFB,0xFD,  /* 00000190    "........" */
> +    0x0E,0x00,0x00,0x40,0x00,0x00,0x00,0x00,  /* 00000198    "...@...." */
> +    0xFF,0x00,0x00,0x00,0x00,0x14,0x0D,0x01,  /* 000001A0    "........" */
> +    0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001A8    "........" */
> +    0x00,0x00,0x15,0x13,0x01,0x00,0x00,0xF0,  /* 000001B0    "........" */
> +    0x2F,0x00,0x00,0x00,0x00,0x40,0x00,0x00,  /* 000001B8    "/....@.." */
> +    0x00,0xC0,0x00,0x00,0x00,0x16,0x11,0x01,  /* 000001C0    "........" */
> +    0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,  /* 000001C8    "........" */
> +    0x00,0x10,0x00,0x00,0x40,0x00,0x17,0x0E,  /* 000001D0    "....@..." */
> +    0x01,0x00,0x20,0x00,0x10,0x00,0x00,0x00,  /* 000001D8    ".. ....." */
> +    0x00,0x00,0x10,0x13,0x18,0x24,0x01,0x00,  /* 000001E0    "........" */
> +    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001E8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000001F0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,  /* 000001F8    ".......(" */
> +    0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,  /* 00000200    "........" */
> +    0x19,0x10,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000208    "........" */
> +    0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x18,  /* 00000210    "........" */
> +    0x1A,0x24,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000218    ".$......" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000220    "........" */
> +    0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,  /* 00000228    "..`....." */
> +    0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,  /* 00000230    "........" */
> +    0x00,0x80,0x00,0x00,0x1B,0x24,0x01,0x00,  /* 00000238    ".....$.." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000240    "........" */
> +    0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000248    "`.....`." */
> +    0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x0C,  /* 00000250    "..`....." */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00   /* 00000258    "........" */
>  };
>  
>  const unsigned char TemplateMcfg[] =
> @@ -1718,8 +1748,8 @@ const unsigned char TemplateRgrt[] =
>  
>  const unsigned char TemplateRhct[] =
>  {
> -    0x52,0x48,0x43,0x54,0x7C,0x00,0x00,0x00,  /* 00000000    "RHCT|..." */
> -    0x01,0x7D,0x4F,0x45,0x4D,0x43,0x41,0x00,  /* 00000008    "..OEMCA." */
> +    0x52,0x48,0x43,0x54,0x96,0x00,0x00,0x00,  /* 00000000    "RHCT|..." */
> +    0x01,0x24,0x4F,0x45,0x4D,0x43,0x41,0x00,  /* 00000008    "..OEMCA." */
>      0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
>      0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
>      0x28,0x09,0x22,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> @@ -1731,9 +1761,12 @@ const unsigned char TemplateRhct[] =
>      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,0xFF,0xFF,0x10,0x00,  /* 00000068    "bs......" */
> -    0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
> -    0x38,0x00,0x00,0x00                       /* 00000078    "........" */
> +    0x62,0x73,0x00,0x00,0xFF,0xFF,0x18,0x00,  /* 00000068    "bs......" */
> +    0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
> +    0x38,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,  /* 00000078    "........" */
> +    0x8E,0x00,0x00,0x00,0x01,0x00,0x0A,0x00,  /* 00000080    "........" */
> +    0x01,0x00,0x00,0x06,0x06,0x06,0x02,0x00,  /* 00000088    "........" */
> +    0x08,0x00,0x01,0x00,0x00,0x02             /* 00000090    "........" */
>  };
>  
>  const unsigned char TemplateRsdp[] =
> diff --git a/sys/contrib/dev/acpica/components/debugger/dbcmds.c b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
> index dca5468870ed..4c8f091f126c 100644
> --- a/sys/contrib/dev/acpica/components/debugger/dbcmds.c
> +++ b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
> @@ -157,7 +157,6 @@
>  #include <contrib/dev/acpica/include/acresrc.h>
>  #include <contrib/dev/acpica/include/actables.h>
>  
> -
>  #define _COMPONENT          ACPI_CA_DEBUGGER
>          ACPI_MODULE_NAME    ("dbcmds")
>  
> @@ -1291,6 +1290,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/components/debugger/dbinput.c b/sys/contrib/dev/acpica/components/debugger/dbinput.c
> index 84173d0c14e4..c900c4ec7acf 100644
> --- a/sys/contrib/dev/acpica/components/debugger/dbinput.c
> +++ b/sys/contrib/dev/acpica/components/debugger/dbinput.c
> @@ -264,6 +264,7 @@ enum AcpiExDebuggerCommands
>      CMD_THREADS,
>  
>      CMD_TEST,
> +	CMD_INTERRUPT,
>  #endif
>  };
>  
> @@ -345,6 +346,7 @@ static const ACPI_DB_COMMAND_INFO   AcpiGbl_DbCommands[] =
>      {"THREADS",      3},
>  
>      {"TEST",         1},
> +    {"INTERRUPT",    1},
>  #endif
>      {NULL,           0}
>  };
> @@ -461,6 +463,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}
>  };
> @@ -1263,6 +1266,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/components/disassembler/dmresrcl.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
> index 19e6eb884d0c..1df288229457 100644
> --- a/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
> +++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
> @@ -1112,7 +1112,7 @@ AcpiDmInterruptDescriptor (
>      {
>          AcpiDmIndent (Level + 1);
>          AcpiOsPrintf ("0x%8.8X,\n",
> -            (UINT32) Resource->ExtendedIrq.u.Interrupts[i]);
> +            (UINT32) Resource->ExtendedIrq.Interrupts[i]);
>      }
>  
>      AcpiDmIndent (Level);
> diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswstate.c b/sys/contrib/dev/acpica/components/dispatcher/dswstate.c
> index 2c8cfa8a57b8..9b49696423b8 100644
> --- a/sys/contrib/dev/acpica/components/dispatcher/dswstate.c
> +++ b/sys/contrib/dev/acpica/components/dispatcher/dswstate.c
> @@ -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);
>      }
>  
> diff --git a/sys/contrib/dev/acpica/components/events/evevent.c b/sys/contrib/dev/acpica/components/events/evevent.c
> index 7c2e21ae7375..70255aae9bd0 100644
> --- a/sys/contrib/dev/acpica/components/events/evevent.c
> +++ b/sys/contrib/dev/acpica/components/events/evevent.c
> @@ -312,8 +312,7 @@ AcpiEvFixedEventInitialize (
>          {
>              Status = AcpiWriteBitRegister (
>                  AcpiGbl_FixedEventInfo[i].EnableRegisterId,
> -                (i == ACPI_EVENT_PCIE_WAKE) ?
> -                ACPI_ENABLE_EVENT : ACPI_DISABLE_EVENT);
> +                ACPI_DISABLE_EVENT);
>              if (ACPI_FAILURE (Status))
>              {
>                  return (Status);
> @@ -362,11 +361,6 @@ AcpiEvFixedEventDetect (
>          return (IntStatus);
>      }
>  
> -    if (FixedEnable & ACPI_BITMASK_PCIEXP_WAKE_DISABLE)
> -         FixedEnable &= ~ACPI_BITMASK_PCIEXP_WAKE_DISABLE;
> -    else
> -         FixedEnable |= ACPI_BITMASK_PCIEXP_WAKE_DISABLE;
> -
>      ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS,
>          "Fixed Event Block: Enable %08X Status %08X\n",
>          FixedEnable, FixedStatus));
> @@ -437,8 +431,7 @@ AcpiEvFixedEventDispatch (
>      {
>          (void) AcpiWriteBitRegister (
>              AcpiGbl_FixedEventInfo[Event].EnableRegisterId,
> -            (Event == ACPI_EVENT_PCIE_WAKE) ?
> -            ACPI_ENABLE_EVENT : ACPI_DISABLE_EVENT);
> +            ACPI_DISABLE_EVENT);
>  
>          ACPI_ERROR ((AE_INFO,
>              "No installed handler for fixed event - %s (%u), disabling",
> diff --git a/sys/contrib/dev/acpica/components/executer/exserial.c b/sys/contrib/dev/acpica/components/executer/exserial.c
> index 0f756dfaefd1..ef1eaf37daa1 100644
> --- a/sys/contrib/dev/acpica/components/executer/exserial.c
> +++ b/sys/contrib/dev/acpica/components/executer/exserial.c
> @@ -505,8 +505,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/components/hardware/hwsleep.c b/sys/contrib/dev/acpica/components/hardware/hwsleep.c
> index 4a352fb9b7d2..7ddb6c2b30d3 100644
> --- a/sys/contrib/dev/acpica/components/hardware/hwsleep.c
> +++ b/sys/contrib/dev/acpica/components/hardware/hwsleep.c
> @@ -475,17 +475,6 @@ AcpiHwLegacyWake (
>              AcpiGbl_FixedEventInfo[ACPI_EVENT_SLEEP_BUTTON].StatusRegisterId,
>              ACPI_CLEAR_STATUS);
>  
> -    /* Enable pcie wake event if support */
> -    if ((AcpiGbl_FADT.Flags & ACPI_FADT_PCI_EXPRESS_WAKE))
> -    {
> -        (void) AcpiWriteBitRegister (
> -            AcpiGbl_FixedEventInfo[ACPI_EVENT_PCIE_WAKE].EnableRegisterId,
> -            ACPI_DISABLE_EVENT);
> -        (void) AcpiWriteBitRegister (
> -            AcpiGbl_FixedEventInfo[ACPI_EVENT_PCIE_WAKE].StatusRegisterId,
> -            ACPI_CLEAR_STATUS);
> -    }
> -
>      AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING);
>      return_ACPI_STATUS (Status);
>  }
> diff --git a/sys/contrib/dev/acpica/components/parser/psopcode.c b/sys/contrib/dev/acpica/components/parser/psopcode.c
> index 0ec2590cc42f..a36148ebcd31 100644
> --- a/sys/contrib/dev/acpica/components/parser/psopcode.c
> +++ b/sys/contrib/dev/acpica/components/parser/psopcode.c
> @@ -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/components/resources/rsaddr.c b/sys/contrib/dev/acpica/components/resources/rsaddr.c
> index 3a719a80d737..4a2d02f4562f 100644
> --- a/sys/contrib/dev/acpica/components/resources/rsaddr.c
> +++ b/sys/contrib/dev/acpica/components/resources/rsaddr.c
> @@ -431,11 +431,11 @@ AcpiRsGetAddressCommon (
>      ACPI_RESOURCE           *Resource,
>      AML_RESOURCE            *Aml)
>  {
> +
>      /* Avoid undefined behavior: member access within misaligned address */
>  
>      AML_RESOURCE_ADDRESS Address;
>      memcpy(&Address, Aml, sizeof(Address));
> -
>      ACPI_FUNCTION_ENTRY();
>  
>      /* Validate the Resource Type */
> diff --git a/sys/contrib/dev/acpica/components/resources/rscreate.c b/sys/contrib/dev/acpica/components/resources/rscreate.c
> index 60694d470b72..5cb7e0923c16 100644
> --- a/sys/contrib/dev/acpica/components/resources/rscreate.c
> +++ b/sys/contrib/dev/acpica/components/resources/rscreate.c
> @@ -475,9 +475,9 @@ AcpiRsCreatePciRoutingTable (
>                  /* Use *remaining* length of the buffer as max for pathname */
>  
>                  PathBuffer.Length = OutputBuffer->Length -
> -                    (UINT32) ((UINT8 *) UserPrt->u.Source -
> +                    (UINT32) ((UINT8 *) UserPrt->Source -
>                      (UINT8 *) OutputBuffer->Pointer);
> -                PathBuffer.Pointer = UserPrt->u.Source;
> +                PathBuffer.Pointer = UserPrt->Source;
>  
>                  Status = AcpiNsHandleToPathname (
>                      (ACPI_HANDLE) Node, &PathBuffer, FALSE);
> *** 637 LINES SKIPPED ***