|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 7/7] Make sure XENFILT PDOs get moved from Present to Enumerated
The code to adjust the state was mistakenly removed in a previous patch.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
src/xenfilt/fdo.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/src/xenfilt/fdo.c b/src/xenfilt/fdo.c
index 7121eb2..0c48090 100644
--- a/src/xenfilt/fdo.c
+++ b/src/xenfilt/fdo.c
@@ -535,8 +535,6 @@ FdoEnumerate(
Relations->Objects,
sizeof (PDEVICE_OBJECT) * Count);
- __FdoAcquireMutex(Fdo);
-
// Remove any PDOs that do not appear in the device list
ListEntry = Fdo->List.Flink;
while (ListEntry != &Fdo->List) {
@@ -561,8 +559,6 @@ FdoEnumerate(
(VOID) FdoAddDevice(Fdo, PhysicalDeviceObject[Index]);
}
- __FdoReleaseMutex(Fdo);
-
__FdoSetEnumerated(Fdo);
__FdoFree(PhysicalDeviceObject);
@@ -1128,6 +1124,8 @@ FdoQueryDeviceRelations(
LowerRelations = (PDEVICE_RELATIONS)Irp->IoStatus.Information;
+ __FdoAcquireMutex(Fdo);
+
if (LowerRelations->Count != 0)
FdoEnumerate(Fdo, LowerRelations);
@@ -1145,7 +1143,20 @@ FdoQueryDeviceRelations(
goto fail3;
if (State == XENFILT_FILTER_DISABLED) {
- ASSERT3U(Count, ==, LowerRelations->Count);
+ PLIST_ENTRY ListEntry;
+
+ for (ListEntry = Fdo->List.Flink;
+ ListEntry != &Fdo->List;
+ ListEntry = ListEntry->Flink) {
+ PXENFILT_DX Dx = CONTAINING_RECORD(ListEntry, XENFILT_DX,
ListEntry);
+ PXENFILT_PDO Pdo = Dx->Pdo;
+
+ ASSERT3U(Dx->Type, ==, PHYSICAL_DEVICE_OBJECT);
+
+ if (PdoGetDevicePnpState(Pdo) == Present)
+ PdoSetDevicePnpState(Pdo, Enumerated);
+ }
+
RtlCopyMemory(Relations, LowerRelations, Size);
Trace("%s: %d PDO(s)\n",
@@ -1164,6 +1175,8 @@ FdoQueryDeviceRelations(
BusRelations);
}
+ __FdoReleaseMutex(Fdo);
+
ExFreePool(LowerRelations);
Irp->IoStatus.Information = (ULONG_PTR)Relations;
--
2.1.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |