[coreboot-gerrit] Change in coreboot[master]: arch/x86/acpi: Add DMAR RMRR helper functions

Julien Viard de Galbert (Code Review) gerrit at coreboot.org
Thu Mar 29 15:08:05 CEST 2018


Julien Viard de Galbert has uploaded this change for review. ( https://review.coreboot.org/25445


Change subject: arch/x86/acpi: Add DMAR RMRR helper functions
......................................................................

arch/x86/acpi: Add DMAR RMRR helper functions

Change-Id: Id4e7d95d2d13a7f7b49fcb6f6b9e8ccd6ae12a9e
Signed-off-by: Julien Viard de Galbert <jviarddegalbert at online.net>
---
M src/arch/x86/acpi.c
M src/arch/x86/include/arch/acpi.h
2 files changed, 33 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/45/25445/1

diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c
index 601b6f0..7d66285 100644
--- a/src/arch/x86/acpi.c
+++ b/src/arch/x86/acpi.c
@@ -9,6 +9,7 @@
  * Copyright (C) 2015 Timothy Pearson <tpearson at raptorengineeringinc.com>,
  * Raptor Engineering
  * Copyright (C) 2016-2017 Siemens AG
+ * Copyright (C) 2018 Online SAS
  *
  * ACPI FADT, FACS, and DSDT table support added by
  * Nick Barker <nick.barker9 at btinternet.com>, and those portions
@@ -461,6 +462,20 @@
 	return drhd->length;
 }
 
+unsigned long acpi_create_dmar_rmrr(unsigned long current, u16 segment,
+				    u32 bar, u64 limit)
+{
+	dmar_rmrr_entry_t *rmrr = (dmar_rmrr_entry_t *)current;
+	memset(rmrr, 0, sizeof(*rmrr));
+	rmrr->type = DMAR_RMRR;
+	rmrr->length = sizeof(*rmrr); /* will be fixed up later */
+	rmrr->segment = segment;
+	rmrr->bar = bar;
+	rmrr->limit = limit;
+
+	return rmrr->length;
+}
+
 unsigned long acpi_create_dmar_atsr(unsigned long current, u8 flags,
 	u16 segment)
 {
@@ -480,6 +495,12 @@
 	drhd->length = current - base;
 }
 
+void acpi_dmar_rmrr_fixup(unsigned long base, unsigned long current)
+{
+	dmar_rmrr_entry_t *rmrr = (dmar_rmrr_entry_t *)base;
+	rmrr->length = current - base;
+}
+
 void acpi_dmar_atsr_fixup(unsigned long base, unsigned long current)
 {
 	dmar_atsr_entry_t *atsr = (dmar_atsr_entry_t *)base;
diff --git a/src/arch/x86/include/arch/acpi.h b/src/arch/x86/include/arch/acpi.h
index 5418420..a1ed338 100644
--- a/src/arch/x86/include/arch/acpi.h
+++ b/src/arch/x86/include/arch/acpi.h
@@ -331,6 +331,15 @@
 	u64 bar;
 } __packed dmar_entry_t;
 
+typedef struct dmar_rmrr_entry {
+	u16 type;
+	u16 length;
+	u16 reserved;
+	u16 segment;
+	u64 bar;
+	u64 limit;
+} __packed dmar_rmrr_entry_t;
+
 typedef struct dmar_atsr_entry {
 	u16 type;
 	u16 length;
@@ -715,9 +724,12 @@
 		      unsigned long (*acpi_fill_dmar)(unsigned long));
 unsigned long acpi_create_dmar_drhd(unsigned long current, u8 flags,
 				    u16 segment, u32 bar);
+unsigned long acpi_create_dmar_rmrr(unsigned long current, u16 segment,
+				    u32 bar, u64 limit);
 unsigned long acpi_create_dmar_atsr(unsigned long current, u8 flags,
 				    u16 segment);
 void acpi_dmar_drhd_fixup(unsigned long base, unsigned long current);
+void acpi_dmar_rmrr_fixup(unsigned long base, unsigned long current);
 void acpi_dmar_atsr_fixup(unsigned long base, unsigned long current);
 unsigned long acpi_create_dmar_drhd_ds_pci_br(unsigned long current,
 					   u8 bus, u8 dev, u8 fn);

-- 
To view, visit https://review.coreboot.org/25445
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id4e7d95d2d13a7f7b49fcb6f6b9e8ccd6ae12a9e
Gerrit-Change-Number: 25445
Gerrit-PatchSet: 1
Gerrit-Owner: Julien Viard de Galbert <jviarddegalbert at online.net>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180329/d0000442/attachment-0001.html>


More information about the coreboot-gerrit mailing list