*/\r
p_ext = p_ctx->p_pdo_ext;\r
CL_ASSERT( p_ext );\r
- CL_ASSERT(p_bfi == p_ext->p_parent_ext->bus_filter);\r
\r
/*\r
* Flag the port PDO as no longer being present. We have to wait until\r
("%s NULL h_ca? p_ext %p\n", p_bfi->whoami, p_ext ) );\r
return;\r
}\r
-\r
+ CL_ASSERT(p_bfi == p_ext->p_parent_ext->bus_filter);\r
+ \r
cl_mutex_acquire( &gp_port_mgr->pdo_mutex );\r
CL_ASSERT( p_ext->h_ca );\r
\r
CL_ASSERT( KeGetCurrentIrql() < DISPATCH_LEVEL );\r
\r
p_ext = p_dev_obj->DeviceExtension;\r
-\r
+ if (p_ext->pdo.b_hibernating) {\r
+ // Can't continue within hibernation stage\r
+ return STATUS_UNSUCCESSFUL;\r
+ }\r
BUS_TRACE( BUS_DBG_PNP, ("Query i/f for %s: PDO %p (=%p),ext %p, present %d, missing %d .\n",\r
p_ext->pdo.cl_ext.vfptr_pnp_po->identity, p_ext->pdo.cl_ext.p_self_do, \r
p_dev_obj, p_ext, p_ext->pdo.b_present, p_ext->pdo.b_reported_missing ) );\r
p_ext = p_dev_obj->DeviceExtension;\r
if( !p_ext->h_ca ||\r
!p_ext->b_present ||\r
+ !p_ext->h_ca->obj.p_ci_ca->verbs.p_hca_dev ||\r
p_ext->b_reported_missing )\r
{\r
return STATUS_NO_SUCH_DEVICE;\r
setup_ci_interface( p_fdo->hca.guid, !!hca_is_livefish(p_fdo), pIfc );\r
\r
pIfc->p_hca_dev = WdfDeviceWdmGetPhysicalDevice(p_fdo->FdoDevice);\r
+ ASSERT(pIfc->p_hca_dev);\r
pIfc->vend_id = (uint32_t)p_fdo->bus_ib_ifc.pdev->ven_id;\r
pIfc->dev_id = (uint16_t)p_fdo->bus_ib_ifc.pdev->dev_id;\r
pIfc->dev_revision = (uint16_t)p_fdo->hca.hw_ver;\r
setup_ci_interface( p_fdo->hca.guid, !!hca_is_livefish(p_fdo), pIfc );\r
\r
pIfc->p_hca_dev = p_fdo->cl_ext.p_pdo;\r
+ ASSERT(pIfc->p_hca_dev); \r
pIfc->vend_id = (uint32_t)p_fdo->bus_ib_ifc.pdev->ven_id;\r
pIfc->dev_id = (uint16_t)p_fdo->bus_ib_ifc.pdev->dev_id;\r
pIfc->dev_revision = (uint16_t)p_fdo->hca.hw_ver;\r
p_ifc->InterfaceHeader.InterfaceDereference = __hca_noop;\r
p_ifc->Verbs = *p_hca_ifc;\r
p_ifc->Verbs.p_hca_dev = &p_fdo->hca;\r
+ ASSERT(p_ifc->Verbs.p_hca_dev); \r
\r
ExFreePool( p_hca_ifc );\r
status = STATUS_SUCCESS;\r