[ros-diffs] [hpoussin] 32297: Bus number can also be stored in resource list header

hpoussin at svn.reactos.org hpoussin at svn.reactos.org
Mon Feb 11 17:49:05 CET 2008


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=32297&r1=32296&r2=32297&view=diff
==============================================================================
--- 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;




More information about the Ros-diffs mailing list