+ return EFI_SUCCESS;\r
+}\r
+\r
+/**\r
+ Collect EFI Info about legacy devices.\r
+\r
+ @param Private Legacy BIOS Instance data\r
+\r
+ @retval EFI_SUCCESS It should always work.\r
+\r
+**/\r
+EFI_STATUS\r
+LegacyBiosBuildSioData (\r
+ IN LEGACY_BIOS_INSTANCE *Private\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ DEVICE_PRODUCER_DATA_HEADER *SioPtr;\r
+ EFI_HANDLE IsaBusController;\r
+ UINTN HandleCount;\r
+ EFI_HANDLE *HandleBuffer;\r
+\r
+ //\r
+ // Get the pointer to the SIO data structure\r
+ //\r
+ SioPtr = &Private->IntThunk->EfiToLegacy16BootTable.SioData;\r
+\r
+ //\r
+ // Zero the data in the SIO data structure\r
+ //\r
+ gBS->SetMem (SioPtr, sizeof (DEVICE_PRODUCER_DATA_HEADER), 0);\r
+\r
+ //\r
+ // Find the ISA Bus Controller used for legacy\r
+ //\r
+ Status = Private->LegacyBiosPlatform->GetPlatformHandle (\r
+ Private->LegacyBiosPlatform,\r
+ EfiGetPlatformIsaBusHandle,\r
+ 0,\r
+ &HandleBuffer,\r
+ &HandleCount,\r
+ NULL\r
+ );\r
+ IsaBusController = HandleBuffer[0];\r
+ if (!EFI_ERROR (Status)) {\r
+ //\r
+ // Force ISA Bus Controller to produce all ISA devices\r
+ //\r
+ gBS->ConnectController (IsaBusController, NULL, NULL, TRUE);\r
+ }\r
+\r
+ LegacyBiosBuildSioDataFromIsaIo (SioPtr);\r