[ofw][patch][[ibbus] boot in SAN environment

Fab Tillier ftillier at windows.microsoft.com
Mon Mar 16 10:40:42 PDT 2009


I think the delay is there so that the IOC PnP manager has time to sweep the fabric and discover the target again.  I think it would be great to have the query relations PNP IRP trigger a sweep, and block until it's complete.  I don't know how difficult this would be though.

-Fab

From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Reuven Amitai
Sent: Monday, March 16, 2009 10:09 AM
To: Leonid Keller; James Yang; stan.smith at intel.com
Cc: ofw at lists.openfabrics.org
Subject: RE: [ofw][patch][[ibbus] boot in SAN environment

Hi,

Is this patch needed after Stan's patch ?
(Since IBBUS is on top of an HCA device, there is no longer a delay and the bfi is bounded at creation time
 -- If I understand the patch correctly ...)

Thanks, Reuven.


________________________________
From: ofw-bounces at lists.openfabrics.org [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Leonid Keller
Sent: Monday, March 16, 2009 6:22 PM
To: James Yang
Cc: ofw at lists.openfabrics.org
Subject: [ofw][patch][[ibbus] boot in SAN environment

this patch adds a 5s delay to wait for hca up for remote boot in SAN environment.

Signed-off-by: James Yang

Index: core/bus/kernel/bus_pnp.c
===================================================================
--- core/bus/kernel/bus_pnp.c (revision 2032)
+++ core/bus/kernel/bus_pnp.c (working copy)
@@ -654,9 +654,10 @@
  IN     IRP* const    p_irp,
   OUT    cl_irp_action_t* const p_action )
 {
- NTSTATUS   status;
+ NTSTATUS   status = STATUS_SUCCESS; /*default to success*/
  bus_fdo_ext_t  *p_ext;
  bus_filter_t  *p_bfi;
+ int     waitLoop = 0;

  BUS_ENTER( BUS_DBG_PNP );

@@ -673,16 +674,18 @@
  p_bfi = p_ext->bus_filter;
  CL_ASSERT( p_bfi->magic == BFI_MAGIC );

- if ( p_bfi->ca_guid == 0ULL )
+ while ( p_bfi->ca_guid == 0ULL )
  {
   /* HCA not yet bound to a BFI slot (no PNP ADD event seen), no bus
    * relations yet.
    */
-  status = STATUS_SUCCESS;
-  BUS_PRINT(BUS_DBG_PNP, ("%s ca_guid %I64x\n",p_bfi->whoami,
+  BUS_PRINT(BUS_DBG_ERROR, ("%s ca_guid %I64x\n",p_bfi->whoami,
         p_bfi->ca_guid));
+  cl_thread_suspend( 100 ); /* suspend for 100 ms */
+  waitLoop++;
+  if(waitLoop>50) break;
  }
- else
+ if ( p_bfi->ca_guid != 0ULL )
  {
   status = port_mgr_get_bus_relations( p_bfi->ca_guid, p_irp );
   if( status == STATUS_SUCCESS ||
@@ -1271,6 +1274,7 @@
  switch( p_io_stack->Parameters.Power.Type )
  {
  case SystemPowerState:
+#if 0
   /*
    * Process on the way up the stack.  We cannot block since the
    * power dispatch function can be called at elevated IRQL if the
@@ -1287,7 +1291,7 @@
   *p_action = IrpDoNothing;
   status = STATUS_PENDING;
   break;
-
+#endif
  case DevicePowerState:
  default:
   /* Pass down and let the PDO driver handle it. */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20090316/e1a95d95/attachment.html>


More information about the ofw mailing list