Author: hpoussin Date: Mon Feb 11 19:49:05 2008 New Revision: 32297
URL: http://svn.reactos.org/svn/reactos?rev=32297&view=rev Log: Bus number can also be stored in resource list header
Modified: trunk/reactos/drivers/bus/pci/fdo.c
Modified: trunk/reactos/drivers/bus/pci/fdo.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/bus/pci/fdo.c?rev=3... ============================================================================== --- trunk/reactos/drivers/bus/pci/fdo.c (original) +++ trunk/reactos/drivers/bus/pci/fdo.c Mon Feb 11 19:49:05 2008 @@ -356,7 +356,6 @@ IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - static BOOLEAN FoundBuggyAllocatedResourcesList = FALSE; PFDO_DEVICE_EXTENSION DeviceExtension; PCM_RESOURCE_LIST AllocatedResources; PCM_PARTIAL_RESOURCE_DESCRIPTOR ResourceDescriptor; @@ -383,6 +382,9 @@ return STATUS_REVISION_MISMATCH;
ASSERT(DeviceExtension->State == dsStopped); + + /* By default, use the bus number in the resource list header */ + DeviceExtension->BusNumber = AllocatedResources->List[0].BusNumber;
for (i = 0; i < AllocatedResources->List[0].PartialResourceList.Count; i++) { @@ -393,6 +395,8 @@ { if (FoundBusNumber || ResourceDescriptor->u.BusNumber.Length != 1) return STATUS_INVALID_PARAMETER; + /* Use this one instead */ + ASSERT(AllocatedResources->List[0].BusNumber == ResourceDescriptor->u.BusNumber.Start); DeviceExtension->BusNumber = ResourceDescriptor->u.BusNumber.Start; DPRINT("Found bus number resource: %lu\n", DeviceExtension->BusNumber); FoundBusNumber = TRUE; @@ -402,22 +406,7 @@ DPRINT("Unknown resource descriptor type 0x%x\n", ResourceDescriptor->Type); } } - /* HACK due to a bug in ACPI driver, which doesn't report the bus number */ - if (!FoundBuggyAllocatedResourcesList && !FoundBusNumber) - { - FoundBuggyAllocatedResourcesList = TRUE; - DPRINT1("No bus number resource found (bug in acpi.sys?), assuming bus number #0\n"); - DeviceExtension->BusNumber = 0; - goto next; - } - /* END HACK */ - if (!FoundBusNumber) - { - DPRINT("Some required resources were not found in allocated resources list\n"); - return STATUS_INSUFFICIENT_RESOURCES; - } - -next: + InitializeListHead(&DeviceExtension->DeviceListHead); KeInitializeSpinLock(&DeviceExtension->DeviceListLock); DeviceExtension->DeviceListCount = 0;