aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/acpi.c4
-rw-r--r--src/arch/x86/include/arch/acpi.h7
-rw-r--r--src/northbridge/intel/gm45/acpi.c2
3 files changed, 9 insertions, 4 deletions
diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c
index 417a322796..1570dc8d07 100644
--- a/src/arch/x86/acpi.c
+++ b/src/arch/x86/acpi.c
@@ -389,7 +389,7 @@ void acpi_create_srat(acpi_srat_t *srat,
header->checksum = acpi_checksum((void *)srat, header->length);
}
-void acpi_create_dmar(acpi_dmar_t *dmar,
+void acpi_create_dmar(acpi_dmar_t *dmar, enum dmar_flags flags,
unsigned long (*acpi_fill_dmar) (unsigned long))
{
acpi_header_t *header = &(dmar->header);
@@ -407,7 +407,7 @@ void acpi_create_dmar(acpi_dmar_t *dmar,
header->revision = 1;
dmar->host_address_width = 40 - 1; /* FIXME: == MTRR size? */
- dmar->flags = 0;
+ dmar->flags = flags;
current = acpi_fill_dmar(current);
diff --git a/src/arch/x86/include/arch/acpi.h b/src/arch/x86/include/arch/acpi.h
index d4bacf5675..2a7ea79e01 100644
--- a/src/arch/x86/include/arch/acpi.h
+++ b/src/arch/x86/include/arch/acpi.h
@@ -220,6 +220,11 @@ enum {
DRHD_INCLUDE_PCI_ALL = 1
};
+enum dmar_flags {
+ DMAR_INTR_REMAP = 1,
+ DMAR_X2APIC_OPT_OUT = 2,
+};
+
typedef struct dmar_entry {
u16 type;
u16 length;
@@ -543,7 +548,7 @@ void acpi_create_mcfg(acpi_mcfg_t *mcfg);
void acpi_create_facs(acpi_facs_t *facs);
-void acpi_create_dmar(acpi_dmar_t *dmar,
+void acpi_create_dmar(acpi_dmar_t *dmar, enum dmar_flags flags,
unsigned long (*acpi_fill_dmar) (unsigned long));
unsigned long acpi_create_dmar_drhd(unsigned long current, u8 flags,
u16 segment, u32 bar);
diff --git a/src/northbridge/intel/gm45/acpi.c b/src/northbridge/intel/gm45/acpi.c
index 5140b9c30a..21a8cd5102 100644
--- a/src/northbridge/intel/gm45/acpi.c
+++ b/src/northbridge/intel/gm45/acpi.c
@@ -116,7 +116,7 @@ unsigned long northbridge_write_acpi_tables(device_t device,
printk(BIOS_DEBUG, "ACPI: * DMAR\n");
dmar = (acpi_dmar_t *) current;
- acpi_create_dmar(dmar, acpi_fill_dmar);
+ acpi_create_dmar(dmar, 0, acpi_fill_dmar);
current += dmar->header.length;
ALIGN_CURRENT;
acpi_add_table(rsdp, dmar);