From 2d735f690c3473e969e315d7dcbf53645f957524 Mon Sep 17 00:00:00 2001 From: Werner Zeh Date: Wed, 27 Jul 2016 07:07:20 +0200 Subject: [PATCH] UPSTREAM: ACPI: Add code to create root port entry in DMAR table PCI root ports with "Address Translation Service" capability can be reported in DMAR table in the ATSR scope to let the OS know how to handle these devices the right way when VT-d is used. Add code to create an entry for a PCI root port using the type "SCOPE_PCI_SUB". BUG=None BRANCH=None TEST=None Change-Id: Ia73f174f9546e6d622ede37f4b6264380972678e Signed-off-by: Werner Zeh Reviewed-on: https://review.coreboot.org/15912 Tested-by: build bot (Jenkins) Reviewed-by: Nico Huber Reviewed-by: Stefan Reinauer Reviewed-on: https://chromium-review.googlesource.com/367386 Commit-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Furquan Shaikh --- src/arch/x86/acpi.c | 7 +++++++ src/arch/x86/include/arch/acpi.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/src/arch/x86/acpi.c b/src/arch/x86/acpi.c index 7d78f04efc..5893461f43 100644 --- a/src/arch/x86/acpi.c +++ b/src/arch/x86/acpi.c @@ -477,6 +477,13 @@ static unsigned long acpi_create_dmar_drhd_ds(unsigned long current, return ds->length; } +unsigned long acpi_create_dmar_drhd_ds_pci_br(unsigned long current, u8 bus, + u8 dev, u8 fn) +{ + return acpi_create_dmar_drhd_ds(current, + SCOPE_PCI_SUB, 0, bus, dev, fn); +} + unsigned long acpi_create_dmar_drhd_ds_pci(unsigned long current, u8 bus, u8 dev, u8 fn) { diff --git a/src/arch/x86/include/arch/acpi.h b/src/arch/x86/include/arch/acpi.h index b27dfff1d5..5d083698b4 100644 --- a/src/arch/x86/include/arch/acpi.h +++ b/src/arch/x86/include/arch/acpi.h @@ -620,6 +620,8 @@ 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_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); unsigned long acpi_create_dmar_drhd_ds_pci(unsigned long current, u8 bus, u8 dev, u8 fn); unsigned long acpi_create_dmar_drhd_ds_ioapic(unsigned long current,