**/\r
VOID\r
IScsiInitIbfTableHeader (\r
- OUT EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header\r
+ OUT EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header,\r
+ IN UINT8 *OemId,\r
+ IN UINT64 *OemTableId\r
)\r
{\r
ZeroMem (Header, sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER));\r
Header->OemId[2] = 'T';\r
Header->OemId[3] = 'E';\r
Header->OemId[4] = 'L';\r
+ \r
+ CopyMem (Header->OemId, OemId, sizeof (Header->OemId));\r
+ Header->OemTableId = *OemTableId;\r
}\r
\r
/**\r
EFI_HANDLE *HandleBuffer;\r
UINT8 *Heap;\r
UINT8 Checksum;\r
+ UINTN Index;\r
+ EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp;\r
+ EFI_ACPI_DESCRIPTION_HEADER *Rsdt;\r
\r
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTableProtocol);\r
if (EFI_ERROR (Status)) {\r
return ;\r
}\r
\r
+\r
+ //\r
+ // Find ACPI table RSD_PTR from system table\r
+ //\r
+ for (Index = 0, Rsdp = NULL; Index < gST->NumberOfTableEntries; Index++) {\r
+ if (CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), &gEfiAcpi20TableGuid) ||\r
+ CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), &gEfiAcpi10TableGuid) ||\r
+ CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), &gEfiAcpiTableGuid)\r
+ ) {\r
+ //\r
+ // A match was found.\r
+ //\r
+ Rsdp = (EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER *) gST->ConfigurationTable[Index].VendorTable;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (Rsdp == NULL) {\r
+ return ;\r
+ } else {\r
+ Rsdt = (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->RsdtAddress;\r
+ }\r
+\r
+\r
if (mIbftInstalled) {\r
Status = AcpiTableProtocol->UninstallAcpiTable (\r
AcpiTableProtocol,\r
//\r
// Fill in the various section of the iSCSI Boot Firmware Table.\r
//\r
- IScsiInitIbfTableHeader (Table);\r
+ IScsiInitIbfTableHeader (Table, Rsdt->OemId, &Rsdt->OemTableId);\r
IScsiInitControlSection (Table, HandleCount);\r
IScsiFillInitiatorSection (Table, &Heap, HandleBuffer[0]);\r
IScsiFillNICAndTargetSections (Table, &Heap, HandleCount, HandleBuffer);\r