diff --git a/drivers/bus/isapnp/fdo.c b/drivers/bus/isapnp/fdo.c
index 5d61c8b2dc4..0fe93251946 100644
--- a/drivers/bus/isapnp/fdo.c
+++ b/drivers/bus/isapnp/fdo.c
@@ -9,7 +9,7 @@
 
 #include "isapnp.h"
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 static
diff --git a/drivers/bus/isapnp/hardware.c b/drivers/bus/isapnp/hardware.c
index bf45d949e6c..9738743419d 100644
--- a/drivers/bus/isapnp/hardware.c
+++ b/drivers/bus/isapnp/hardware.c
@@ -9,7 +9,7 @@
 
 #include "isapnp.h"
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 #ifdef _MSC_VER
diff --git a/drivers/bus/isapnp/interface.c b/drivers/bus/isapnp/interface.c
index 057589bb35a..934a1b3113e 100644
--- a/drivers/bus/isapnp/interface.c
+++ b/drivers/bus/isapnp/interface.c
@@ -9,7 +9,7 @@
 
 #include "isapnp.h"
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 /* FUNCTIONS ******************************************************************/
diff --git a/drivers/bus/isapnp/isapnp.c b/drivers/bus/isapnp/isapnp.c
index 45af7f60bf8..8fa33692291 100644
--- a/drivers/bus/isapnp/isapnp.c
+++ b/drivers/bus/isapnp/isapnp.c
@@ -13,7 +13,7 @@
 
 #include <search.h>
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 /* GLOBALS ********************************************************************/
diff --git a/drivers/bus/isapnp/pdo.c b/drivers/bus/isapnp/pdo.c
index b6e89cb4e89..949ceb25c7f 100644
--- a/drivers/bus/isapnp/pdo.c
+++ b/drivers/bus/isapnp/pdo.c
@@ -9,7 +9,7 @@
 
 #include "isapnp.h"
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 static
@@ -928,7 +928,10 @@ IsaPdoPnp(
             }
 
             if (NT_SUCCESS(Status))
+            {
+                DPRINT1("Device is started\n");
                 PdoExt->Common.State = dsStarted;
+            }
             break;
         }
 
diff --git a/drivers/bus/isapnp/stub.c b/drivers/bus/isapnp/stub.c
index 7b37c887adf..5309d96f916 100644
--- a/drivers/bus/isapnp/stub.c
+++ b/drivers/bus/isapnp/stub.c
@@ -15,7 +15,7 @@
 
 #include "isapnp.h"
 
-#define NDEBUG
+//#define NDEBUG
 #include <debug.h>
 
 /* FUNCTIONS ******************************************************************/
diff --git a/ntoskrnl/io/debug.c b/ntoskrnl/io/debug.c
index ced566bdcad..029eb6915fb 100644
--- a/ntoskrnl/io/debug.c
+++ b/ntoskrnl/io/debug.c
@@ -202,35 +202,94 @@ PipDumpIoResourceDescriptor(
     switch (Descriptor->Type)
     {
         case CmResourceTypeNull:
-            DPRINT1("[%p:%X:%X] O: Len %X Align %X Min %I64X, Max %I64X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.Generic.Length, Descriptor->u.Generic.Alignment, Descriptor->u.Generic.MinimumAddress.QuadPart, Descriptor->u.Generic.MaximumAddress.QuadPart);
+            DPRINT1("[%p:%X:%X:%X] O: Len %X Align %X Min %I64X, Max %I64X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.Generic.Length,
+                    Descriptor->u.Generic.Alignment,
+                    Descriptor->u.Generic.MinimumAddress.QuadPart,
+                    Descriptor->u.Generic.MaximumAddress.QuadPart);
             break;
 
         case CmResourceTypePort:
-            DPRINT1("[%p:%X:%X] IO: Min %X:%X, Max %X:%X, Align %X Len %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.Port.MinimumAddress.HighPart, Descriptor->u.Port.MinimumAddress.LowPart, Descriptor->u.Port.MaximumAddress.HighPart, Descriptor->u.Port.MaximumAddress.LowPart, Descriptor->u.Port.Alignment, Descriptor->u.Port.Length);
+            DPRINT1("[%p:%X:%X:%X] IO: Min %X:%X, Max %X:%X, Align %X Len %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.Port.MinimumAddress.HighPart,
+                    Descriptor->u.Port.MinimumAddress.LowPart,
+                    Descriptor->u.Port.MaximumAddress.HighPart,
+                    Descriptor->u.Port.MaximumAddress.LowPart,
+                    Descriptor->u.Port.Alignment,
+                    Descriptor->u.Port.Length);
             break;
 
         case CmResourceTypeInterrupt:
-            DPRINT1("[%p:%X:%X] INT: Min %X Max %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.Interrupt.MinimumVector, Descriptor->u.Interrupt.MaximumVector);
+            DPRINT1("[%p:%X:%X:%X] INT: Min %X Max %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.Interrupt.MinimumVector,
+                    Descriptor->u.Interrupt.MaximumVector);
             break;
 
         case CmResourceTypeMemory:
-            DPRINT1("[%p:%X:%X] MEM: Min %X:%X, Max %X:%X, Align %X Len %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.Memory.MinimumAddress.HighPart, Descriptor->u.Memory.MinimumAddress.LowPart, Descriptor->u.Memory.MaximumAddress.HighPart, Descriptor->u.Memory.MaximumAddress.LowPart, Descriptor->u.Memory.Alignment, Descriptor->u.Memory.Length);
+            DPRINT1("[%p:%X:%X:%X] MEM: Min %X:%X, Max %X:%X, Align %X Len %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.Memory.MinimumAddress.HighPart,
+                    Descriptor->u.Memory.MinimumAddress.LowPart,
+                    Descriptor->u.Memory.MaximumAddress.HighPart,
+                    Descriptor->u.Memory.MaximumAddress.LowPart,
+                    Descriptor->u.Memory.Alignment,
+                    Descriptor->u.Memory.Length);
             break;
 
         case CmResourceTypeDma:
-            DPRINT1("[%p:%X:%X] DMA: Min %X Max %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.Dma.MinimumChannel, Descriptor->u.Dma.MaximumChannel);
+            DPRINT1("[%p:%X:%X:%X] DMA: Min %X Max %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.Dma.MinimumChannel,
+                    Descriptor->u.Dma.MaximumChannel);
             break;
 
         case CmResourceTypeBusNumber:
-            DPRINT1("[%p:%X:%X] BUS: Min %X Max %X Len %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.BusNumber.MinBusNumber, Descriptor->u.BusNumber.MaxBusNumber, Descriptor->u.BusNumber.Length);
+            DPRINT1("[%p:%X:%X:%X] BUS: Min %X Max %X Len %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.BusNumber.MinBusNumber,
+                    Descriptor->u.BusNumber.MaxBusNumber,
+                    Descriptor->u.BusNumber.Length);
             break;
 
         case CmResourceTypeConfigData:
-            DPRINT1("[%p:%X:%X] CFG: Priority %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.ConfigData.Priority);
+            DPRINT1("[%p:%X:%X:%X] CFG: Priority %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.ConfigData.Priority);
             break;
 
         case CmResourceTypeDevicePrivate:
-            DPRINT1("[%p:%X:%X] DAT: %X %X %X\n", Descriptor, Descriptor->Option, Descriptor->ShareDisposition, Descriptor->u.DevicePrivate.Data[0], Descriptor->u.DevicePrivate.Data[1], Descriptor->u.DevicePrivate.Data[2]);
+            DPRINT1("[%p:%X:%X:%X] DAT: %X %X %X\n",
+                    Descriptor,
+                    Descriptor->Option,
+                    Descriptor->ShareDisposition,
+                    Descriptor->Flags,
+                    Descriptor->u.DevicePrivate.Data[0],
+                    Descriptor->u.DevicePrivate.Data[1],
+                    Descriptor->u.DevicePrivate.Data[2]);
             break;
 
         default:
@@ -287,7 +346,8 @@ PipDumpResourceRequirementsList(
 
     for (ix = 0; ix < IoResource->AlternativeLists; ix++)
     {
-        DPRINT1("AltList %p, AltList->Count %X\n", AltList, AltList->Count);
+        DPRINT1("AltList %p, AltList->Count %X ver.%d rev.%d\n",
+                AltList, AltList->Count, AltList->Version, AltList->Revision);
 
         for (jx = 0; jx < AltList->Count; jx++)
         {
diff --git a/ntoskrnl/io/pnpmgr/devaction.c b/ntoskrnl/io/pnpmgr/devaction.c
index 8b133ef80f4..f6aadee8c5c 100644
--- a/ntoskrnl/io/pnpmgr/devaction.c
+++ b/ntoskrnl/io/pnpmgr/devaction.c
@@ -29,6 +29,18 @@
 #define NDEBUG
 #include <debug.h>
 
+extern VOID
+NTAPI
+PipDumpResourceRequirementsList(
+    _In_ PIO_RESOURCE_REQUIREMENTS_LIST IoResource,
+    _In_ ULONG DebugLevel);
+
+extern VOID
+NTAPI
+PipDumpCmResourceList(
+    _In_ PCM_RESOURCE_LIST CmResource,
+    _In_ ULONG DebugLevel);
+
 /* GLOBALS *******************************************************************/
 
 extern ERESOURCE IopDriverLoadResource;
@@ -1280,7 +1292,7 @@ PiInitializeDevNode(
         DeviceNode->ChildBusTypeIndex = -1;
     }
 
-    DPRINT("Sending IRP_MN_QUERY_RESOURCES to device stack\n");
+    DPRINT1("Sending IRP_MN_QUERY_RESOURCES to device stack\n");
 
     Status = IopInitiatePnpIrp(DeviceNode->PhysicalDeviceObject,
                                &IoStatusBlock,
@@ -1289,15 +1301,16 @@ PiInitializeDevNode(
     if (NT_SUCCESS(Status) && IoStatusBlock.Information)
     {
         DeviceNode->BootResources = (PCM_RESOURCE_LIST)IoStatusBlock.Information;
+        PipDumpCmResourceList(DeviceNode->BootResources, 0);
         IopDeviceNodeSetFlag(DeviceNode, DNF_HAS_BOOT_CONFIG);
     }
     else
     {
-        DPRINT("IopInitiatePnpIrp() failed (Status %x) or IoStatusBlock.Information=NULL\n", Status);
+        DPRINT1("IopInitiatePnpIrp() failed (Status %x) or IoStatusBlock.Information=NULL\n", Status);
         DeviceNode->BootResources = NULL;
     }
 
-    DPRINT("Sending IRP_MN_QUERY_RESOURCE_REQUIREMENTS to device stack\n");
+    DPRINT1("Sending IRP_MN_QUERY_RESOURCE_REQUIREMENTS to device stack\n");
 
     Status = IopInitiatePnpIrp(DeviceNode->PhysicalDeviceObject,
                                &IoStatusBlock,
@@ -1306,10 +1319,11 @@ PiInitializeDevNode(
     if (NT_SUCCESS(Status))
     {
         DeviceNode->ResourceRequirements = (PIO_RESOURCE_REQUIREMENTS_LIST)IoStatusBlock.Information;
+        PipDumpResourceRequirementsList(DeviceNode->ResourceRequirements, 0);
     }
     else
     {
-        DPRINT("IopInitiatePnpIrp() failed (Status %08lx)\n", Status);
+        DPRINT1("IopInitiatePnpIrp() failed (Status %08lx)\n", Status);
         DeviceNode->ResourceRequirements = NULL;
     }
 
@@ -1508,7 +1522,7 @@ done:
  * Sends IRP_MN_QUERY_PNP_DEVICE_STATE request and sets device node's flags
  * according to the result.
  * Tree reenumeration should be started upon a successful return of the function.
- * 
+ *
  * @todo       Do not return STATUS_SUCCESS if nothing is changed.
  */
 static
@@ -1538,7 +1552,7 @@ PiUpdateDeviceState(
     if (PnPFlags & PNP_DEVICE_REMOVED || PnPFlags & PNP_DEVICE_DISABLED)
     {
         PiSetDevNodeProblem(DeviceNode,
-                            PnPFlags & PNP_DEVICE_DISABLED 
+                            PnPFlags & PNP_DEVICE_DISABLED
                             ? CM_PROB_HARDWARE_DISABLED
                             : CM_PROB_DEVICE_NOT_THERE);
 
@@ -2413,7 +2427,7 @@ PiDevNodeStateMachine(
                         PiIrpQueryStopDevice(currentNode);
                         PiSetDevNodeState(currentNode, DeviceNodeQueryStopped);
                     }
-                    
+
                     doProcessAgain = TRUE;
                 }
                 break;
@@ -2613,7 +2627,7 @@ PipDeviceActionWorker(
                     }
                 }
                 // TODO: Windows may return STATUS_DELETE_PENDING here
-                status = STATUS_SUCCESS;                
+                status = STATUS_SUCCESS;
                 break;
 
             default:
diff --git a/ntoskrnl/io/pnpmgr/pnpirp.c b/ntoskrnl/io/pnpmgr/pnpirp.c
index 4a6a50c92ef..67ca183034a 100644
--- a/ntoskrnl/io/pnpmgr/pnpirp.c
+++ b/ntoskrnl/io/pnpmgr/pnpirp.c
@@ -10,6 +10,18 @@
 #define NDEBUG
 #include <debug.h>
 
+extern VOID
+NTAPI
+PipDumpResourceRequirementsList(
+    _In_ PIO_RESOURCE_REQUIREMENTS_LIST IoResource,
+    _In_ ULONG DebugLevel);
+
+extern VOID
+NTAPI
+PipDumpCmResourceList(
+    _In_ PCM_RESOURCE_LIST CmResource,
+    _In_ ULONG DebugLevel);
+
 NTSTATUS
 IopSynchronousCall(
     _In_ PDEVICE_OBJECT DeviceObject,
@@ -216,6 +228,7 @@ PiIrpQueryResources(
     status = IopSynchronousCall(DeviceNode->PhysicalDeviceObject, &stack, (PVOID)&longRes);
     if (NT_SUCCESS(status))
     {
+        PipDumpCmResourceList((PVOID)longRes, 0);
         *Resources = (PVOID)longRes;
     }
 
@@ -242,6 +255,7 @@ PiIrpQueryResourceRequirements(
     status = IopSynchronousCall(DeviceNode->PhysicalDeviceObject, &stack, (PVOID)&longRes);
     if (NT_SUCCESS(status))
     {
+        PipDumpResourceRequirementsList((PVOID)longRes, 0);
         *Resources = (PVOID)longRes;
     }
 
