+ if (Configuration == NULL || Configuration->Desc == ACPI_END_TAG_DESCRIPTOR) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ RootBridgeDev->BusNumberRanges = Configuration;\r
+\r
+ //\r
+ // Sort the descriptors in ascending order\r
+ //\r
+ for (Configuration1 = Configuration; Configuration1->Desc != ACPI_END_TAG_DESCRIPTOR; Configuration1++) {\r
+ Configuration2 = Configuration1;\r
+ for (Configuration3 = Configuration1 + 1; Configuration3->Desc != ACPI_END_TAG_DESCRIPTOR; Configuration3++) {\r
+ if (Configuration2->AddrRangeMin > Configuration3->AddrRangeMin) {\r
+ Configuration2 = Configuration3;\r
+ }\r
+ }\r
+ //\r
+ // All other fields other than AddrRangeMin and AddrLen are ignored in a descriptor,\r
+ // so only need to swap these two fields.\r
+ //\r
+ if (Configuration2 != Configuration1) {\r
+ AddrRangeMin = Configuration1->AddrRangeMin;\r
+ Configuration1->AddrRangeMin = Configuration2->AddrRangeMin;\r
+ Configuration2->AddrRangeMin = AddrRangeMin;\r
+ \r
+ AddrLen = Configuration1->AddrLen;\r
+ Configuration1->AddrLen = Configuration2->AddrLen;\r
+ Configuration2->AddrLen = AddrLen;\r
+ }\r
+ }\r
+\r