PATCH: Add ACPI IVHD_EXT structure to acpireg.h

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

PATCH: Add ACPI IVHD_EXT structure to acpireg.h

Jordan Hargrave
This patch adds a couple of entries for AMD IOMMU structure definitions in ACPI

Index: acpireg.h
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpireg.h,v
retrieving revision 1.45
diff -u -p -r1.45 acpireg.h
--- acpireg.h 28 Aug 2019 22:39:09 -0000 1.45
+++ acpireg.h 15 Sep 2020 06:29:50 -0000
@@ -623,6 +623,9 @@ struct acpi_ivmd {
 struct acpi_ivhd {
  uint8_t type;
  uint8_t flags;
+#define IVHD_PPRSUP (1L << 7)
+#define IVHD_PREFSUP (1L << 6)
+#define IVHD_COHERENT (1L << 5)
 #define IVHD_IOTLB (1L << 4)
 #define IVHD_ISOC (1L << 3)
 #define IVHD_RESPASSPW (1L << 2)
@@ -638,13 +641,28 @@ struct acpi_ivhd {
 #define IVHD_UNITID_MASK 0x1F
 #define IVHD_MSINUM_SHIFT 0
 #define IVHD_MSINUM_MASK 0x1F
- uint32_t reserved;
+ uint32_t feature;
+} __packed;
+
+struct acpi_ivhd_ext {
+ uint8_t type;
+ uint8_t flags;
+ uint16_t length;
+ uint16_t devid;
+ uint16_t cap;
+ uint64_t address;
+ uint16_t segment;
+ uint16_t info;
+ uint32_t attrib;
+ uint64_t efr;
+ uint8_t reserved[8];
 } __packed;
 
 union acpi_ivrs_entry {
  struct {
  uint8_t type;
 #define IVRS_IVHD 0x10
+#define IVRS_IVHD_EXT 0x11
 #define IVRS_IVMD_ALL 0x20
 #define IVRS_IVMD_SPECIFIED 0x21
 #define IVRS_IVMD_RANGE 0x22
@@ -652,6 +670,7 @@ union acpi_ivrs_entry {
  uint16_t length;
  } __packed;
  struct acpi_ivhd ivhd;
+ struct acpi_ivhd_ext ivhd_ext;
  struct acpi_ivmd ivmd;
 } __packed;
 

Reply | Threaded
Open this post in threaded view
|

Re: PATCH: Add ACPI IVHD_EXT structure to acpireg.h

Mark Kettenis
> Date: Tue, 15 Sep 2020 01:37:33 -0500
> From: Jordan Hargrave <[hidden email]>
>
> This patch adds a couple of entries for AMD IOMMU structure
> definitions in ACPI

ok kettenis@

> Index: acpireg.h
> ===================================================================
> RCS file: /cvs/src/sys/dev/acpi/acpireg.h,v
> retrieving revision 1.45
> diff -u -p -r1.45 acpireg.h
> --- acpireg.h 28 Aug 2019 22:39:09 -0000 1.45
> +++ acpireg.h 15 Sep 2020 06:29:50 -0000
> @@ -623,6 +623,9 @@ struct acpi_ivmd {
>  struct acpi_ivhd {
>   uint8_t type;
>   uint8_t flags;
> +#define IVHD_PPRSUP (1L << 7)
> +#define IVHD_PREFSUP (1L << 6)
> +#define IVHD_COHERENT (1L << 5)
>  #define IVHD_IOTLB (1L << 4)
>  #define IVHD_ISOC (1L << 3)
>  #define IVHD_RESPASSPW (1L << 2)
> @@ -638,13 +641,28 @@ struct acpi_ivhd {
>  #define IVHD_UNITID_MASK 0x1F
>  #define IVHD_MSINUM_SHIFT 0
>  #define IVHD_MSINUM_MASK 0x1F
> - uint32_t reserved;
> + uint32_t feature;
> +} __packed;
> +
> +struct acpi_ivhd_ext {
> + uint8_t type;
> + uint8_t flags;
> + uint16_t length;
> + uint16_t devid;
> + uint16_t cap;
> + uint64_t address;
> + uint16_t segment;
> + uint16_t info;
> + uint32_t attrib;
> + uint64_t efr;
> + uint8_t reserved[8];
>  } __packed;
>  
>  union acpi_ivrs_entry {
>   struct {
>   uint8_t type;
>  #define IVRS_IVHD 0x10
> +#define IVRS_IVHD_EXT 0x11
>  #define IVRS_IVMD_ALL 0x20
>  #define IVRS_IVMD_SPECIFIED 0x21
>  #define IVRS_IVMD_RANGE 0x22
> @@ -652,6 +670,7 @@ union acpi_ivrs_entry {
>   uint16_t length;
>   } __packed;
>   struct acpi_ivhd ivhd;
> + struct acpi_ivhd_ext ivhd_ext;
>   struct acpi_ivmd ivmd;
>  } __packed;
>  
>
>