acpi: add SRAT Generic Initiator Affinity structure

Generic Initiator Affinity structure is introdcued in ACPI spec 6.3.

This structure is used to define NUMA affinity domain which is
established by generic initiator (such as by CXL device).

Signed-off-by: Jonathan Zhang <jonzhang@fb.com>
Change-Id: Ic6ef01c59e02f30dc290f27e741027e16f5d8359
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52734
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lance Zhao
This commit is contained in:
Jonathan Zhang
2021-04-21 17:51:31 -07:00
committed by Werner Zeh
parent 2de78e25a3
commit 3164b645ab
2 changed files with 42 additions and 0 deletions

View File

@@ -508,6 +508,23 @@ int acpi_create_srat_mem(acpi_srat_mem_t *mem, u8 node, u32 basek, u32 sizek,
return mem->length;
}
int acpi_create_srat_gia_pci(acpi_srat_gia_t *gia, u32 proximity_domain,
u16 seg, u8 bus, u8 dev, u8 func, u32 flags)
{
gia->type = ACPI_SRAT_STRUCTURE_GIA;
gia->length = sizeof(acpi_srat_gia_t);
gia->proximity_domain = proximity_domain;
gia->dev_handle_type = ACPI_SRAT_GIA_DEV_HANDLE_PCI;
/* First two bytes has segment number */
memcpy(gia->dev_handle, &seg, 2);
gia->dev_handle[2] = bus; /* Byte 2 has bus number */
/* Byte 3 has bits 7:3 for dev, bits 2:0 for func */
gia->dev_handle[3] = PCI_SLOT(dev) | PCI_FUNC(func);
gia->flags = flags;
return gia->length;
}
/* http://www.microsoft.com/whdc/system/sysinternals/sratdwn.mspx */
void acpi_create_srat(acpi_srat_t *srat,
unsigned long (*acpi_fill_srat)(unsigned long current))