Skip to content

Commit 4fd1475

Browse files
shamiali2008rafaeljw
authored andcommitted
ACPICA: IORT: Updates for revision E.d
ACPICA commit 87a2e39b8abdfedfb86b0a105708e37e895becd9 IORT revision is now updated to E.d (ARM DEN 0049E.d) and contains a few additions like, -Added descriptor in the root complex node for specifying PASID width supported by the root complex. -Updated RMR node Flags field. -Introduced memory access attributes in the RMR node. Please note that IORT Rev E.c is deprecated and not supported. Link: acpica/acpica@87a2e39b Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 3d6c655 commit 4fd1475

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

include/acpi/actbl2.h

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ struct acpi_table_bdat {
357357
* IORT - IO Remapping Table
358358
*
359359
* Conforms to "IO Remapping Table System Software on ARM Platforms",
360-
* Document number: ARM DEN 0049E.b, Feb 2021
360+
* Document number: ARM DEN 0049E.d, Feb 2022
361361
*
362362
******************************************************************************/
363363

@@ -454,7 +454,8 @@ struct acpi_iort_root_complex {
454454
u32 ats_attribute;
455455
u32 pci_segment_number;
456456
u8 memory_address_limit; /* Memory address size limit */
457-
u8 reserved[3]; /* Reserved, must be zero */
457+
u16 pasid_capabilities; /* PASID Capabilities */
458+
u8 reserved[1]; /* Reserved, must be zero */
458459
};
459460

460461
/* Masks for ats_attribute field above */
@@ -463,6 +464,9 @@ struct acpi_iort_root_complex {
463464
#define ACPI_IORT_PRI_SUPPORTED (1<<1) /* The root complex PRI support */
464465
#define ACPI_IORT_PASID_FWD_SUPPORTED (1<<2) /* The root complex PASID forward support */
465466

467+
/* Masks for pasid_capabilities field above */
468+
#define ACPI_IORT_PASID_MAX_WIDTH (0x1F) /* Bits 0-4 */
469+
466470
struct acpi_iort_smmu {
467471
u64 base_address; /* SMMU base address */
468472
u64 span; /* Length of memory range */
@@ -538,6 +542,25 @@ struct acpi_iort_rmr {
538542
u32 rmr_offset;
539543
};
540544

545+
/* Masks for Flags field above */
546+
#define ACPI_IORT_RMR_REMAP_PERMITTED (1)
547+
#define ACPI_IORT_RMR_ACCESS_PRIVILEGE (1<<1)
548+
549+
/*
550+
* Macro to access the Access Attributes in flags field above:
551+
* Access Attributes is encoded in bits 9:2
552+
*/
553+
#define ACPI_IORT_RMR_ACCESS_ATTRIBUTES(flags) (((flags) >> 2) & 0xFF)
554+
555+
/* Values for above Access Attributes */
556+
557+
#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRNE 0x00
558+
#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRE 0x01
559+
#define ACPI_IORT_RMR_ATTR_DEVICE_NGRE 0x02
560+
#define ACPI_IORT_RMR_ATTR_DEVICE_GRE 0x03
561+
#define ACPI_IORT_RMR_ATTR_NORMAL_NC 0x04
562+
#define ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB 0x05
563+
541564
struct acpi_iort_rmr_desc {
542565
u64 base_address;
543566
u64 length;

0 commit comments

Comments
 (0)