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=…
==============================================================================
--- 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;