diff options
Diffstat (limited to 'src/acpi')
-rw-r--r-- | src/acpi/acpi.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/acpi/acpi.c b/src/acpi/acpi.c index 867e163c99..b350bc389e 100644 --- a/src/acpi/acpi.c +++ b/src/acpi/acpi.c @@ -638,6 +638,21 @@ unsigned long acpi_create_dmar_andd(unsigned long current, u8 device_number, return andd->length; } +unsigned long acpi_create_dmar_satc(unsigned long current, u8 flags, + u16 segment, const char *device_scope) +{ + dmar_satc_entry_t *satc = (dmar_satc_entry_t *)current; + int satc_len = sizeof(dmar_satc_entry_t) + strlen(device_scope) + 1; + memset(satc, 0, satc_len); + satc->type = DMAR_SATC; + satc->length = satc_len; + satc->flags = flags; + satc->segment_number = segment; + memcpy(&satc->device_scope, device_scope, strlen(device_scope)); + + return satc->length; +} + void acpi_dmar_drhd_fixup(unsigned long base, unsigned long current) { dmar_entry_t *drhd = (dmar_entry_t *)base; @@ -656,6 +671,12 @@ void acpi_dmar_atsr_fixup(unsigned long base, unsigned long current) atsr->length = current - base; } +void acpi_dmar_satc_fixup(unsigned long base, unsigned long current) +{ + dmar_satc_entry_t *satc = (dmar_satc_entry_t *)base; + satc->length = current - base; +} + static unsigned long acpi_create_dmar_ds(unsigned long current, enum dev_scope_type type, u8 enumeration_id, u8 bus, u8 dev, u8 fn) { |