DriverEntry->Unrequested = FALSE;\r
DriverEntry->Dependent = TRUE;\r
\r
+ DEBUG ((DEBUG_DISPATCH, "Schedule FFS(%g) - EFI_SUCCESS\n", DriverName));\r
+\r
return EFI_SUCCESS;\r
}\r
}\r
+ \r
+ DEBUG ((DEBUG_DISPATCH, "Schedule FFS(%g) - EFI_NOT_FOUND\n", DriverName));\r
+ \r
return EFI_NOT_FOUND;\r
}\r
\r
SmmInsertOnScheduledQueueWhileProcessingBeforeAndAfter (DriverEntry);\r
ReadyToRun = TRUE;\r
}\r
+ } else {\r
+ if (DriverEntry->Unrequested) {\r
+ DEBUG ((DEBUG_DISPATCH, "Evaluate SMM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
+ DEBUG ((DEBUG_DISPATCH, " SOR = Not Requested\n"));\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE\n"));\r
+ }\r
}\r
}\r
} while (ReadyToRun);\r
//\r
for (Link = mDiscoveredList.ForwardLink; Link != &mDiscoveredList; Link = Link->ForwardLink) {\r
DriverEntry = CR(Link, EFI_SMM_DRIVER_ENTRY, Link, EFI_SMM_DRIVER_ENTRY_SIGNATURE);\r
- if (DriverEntry->Before && DriverEntry->Dependent) {\r
+ if (DriverEntry->Before && DriverEntry->Dependent && DriverEntry != InsertedDriverEntry) {\r
+ DEBUG ((DEBUG_DISPATCH, "Evaluate SMM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
+ DEBUG ((DEBUG_DISPATCH, " BEFORE FFS(%g) = ", &DriverEntry->BeforeAfterGuid));\r
if (CompareGuid (&InsertedDriverEntry->FileName, &DriverEntry->BeforeAfterGuid)) {\r
//\r
// Recursively process BEFORE\r
//\r
+ DEBUG ((DEBUG_DISPATCH, "TRUE\n END\n RESULT = TRUE\n"));\r
SmmInsertOnScheduledQueueWhileProcessingBeforeAndAfter (DriverEntry);\r
+ } else {\r
+ DEBUG ((DEBUG_DISPATCH, "FALSE\n END\n RESULT = FALSE\n"));\r
}\r
}\r
}\r
//\r
for (Link = mDiscoveredList.ForwardLink; Link != &mDiscoveredList; Link = Link->ForwardLink) {\r
DriverEntry = CR(Link, EFI_SMM_DRIVER_ENTRY, Link, EFI_SMM_DRIVER_ENTRY_SIGNATURE);\r
- if (DriverEntry->After && DriverEntry->Dependent) {\r
+ if (DriverEntry->After && DriverEntry->Dependent && DriverEntry != InsertedDriverEntry) {\r
+ DEBUG ((DEBUG_DISPATCH, "Evaluate SMM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
+ DEBUG ((DEBUG_DISPATCH, " AFTER FFS(%g) = ", &DriverEntry->BeforeAfterGuid));\r
if (CompareGuid (&InsertedDriverEntry->FileName, &DriverEntry->BeforeAfterGuid)) {\r
//\r
// Recursively process AFTER\r
//\r
+ DEBUG ((DEBUG_DISPATCH, "TRUE\n END\n RESULT = TRUE\n"));\r
SmmInsertOnScheduledQueueWhileProcessingBeforeAndAfter (DriverEntry);\r
+ } else {\r
+ DEBUG ((DEBUG_DISPATCH, "FALSE\n END\n RESULT = FALSE\n"));\r
}\r
}\r
}\r
DriverEntry->Dependent = FALSE;\r
DriverEntry->Scheduled = TRUE;\r
InsertTailList (&mScheduledQueue, &DriverEntry->ScheduledLink);\r
+ DEBUG ((DEBUG_DISPATCH, "Evaluate SMM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = TRUE (Apriori)\n"));\r
break;\r
}\r
}\r