<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=608571215-30102008>We run from time to 
time into situations, where the bus driver fails on the start up because of some 
FW problem.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=608571215-30102008>Bus driver 
usually  writes to Event Log the name of the failed command without the 
error code.</SPAN></FONT></DIV>
<DIV><FONT><SPAN class=608571215-30102008><FONT face=Arial 
size=2></FONT></SPAN></FONT> </DIV>
<DIV><FONT><SPAN class=608571215-30102008><FONT face=Arial size=2>I've committed 
a fix (</FONT><FONT face=Arial size=2><SPAN class=608571215-30102008>1714, 
1715</SPAN></FONT><FONT face=Arial><FONT size=2><SPAN 
class=608571215-30102008>)</SPAN>, that improves this 
logging.</FONT></FONT></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=608571215-30102008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=608571215-30102008>Index: 
V:/svn/winib/trunk/hw/mlx4/kernel/bus/net/cmd.c<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/hw/mlx4/kernel/bus/net/cmd.c (revision 3404)<BR>+++ 
V:/svn/winib/trunk/hw/mlx4/kernel/bus/net/cmd.c (revision 3405)<BR>@@ 
-208,6 +208,7 @@<BR>  u8 __iomem *hcr = 
priv->cmd.hcr;<BR>  int err = 0;<BR>  u64 
end;<BR>+ u8 
status;<BR> <BR>  down(&priv->cmd.poll_sem);<BR> <BR>@@ 
-232,8 +233,11 @@<BR>    (u64) be32_to_cpu((__force 
__be32)<BR>        __raw_readl(hcr + 
HCR_OUT_PARAM_OFFSET + 4));<BR> <BR>- err = 
mlx4_status_to_errno((u8)(be32_to_cpu((__force 
__be32)<BR>-            
__raw_readl(hcr + HCR_STATUS_OFFSET)) >> 24));<BR>+ status = 
(u8)(be32_to_cpu((__force __be32)__raw_readl(hcr + HCR_STATUS_OFFSET)) >> 
24);<BR>+ err = mlx4_status_to_errno(status);<BR>+ if 
(status)<BR>+  mlx4_err(dev, "Command failed: op %#hx, status %d, 
errno %d.\n", <BR>+   op, status, 
err);<BR> <BR> out:<BR>  up(&priv->cmd.poll_sem);<BR>@@ 
-251,6 +255,10 
@@<BR>   return;<BR> <BR>  context->result    
= mlx4_status_to_errno(status);<BR>+ <BR>+ if 
(status)<BR>+  mlx4_err(dev, "Command failed: token %#hx, status %d, 
errno %d.\n", <BR>+   token, status, 
context->result);<BR>  context->out_param = 
out_param;<BR> <BR>  complete(&context->done);<BR>@@ 
-280,7 +288,7 @@<BR> <BR>  if 
(wait_for_completion_timeout(&context->done, msecs_to_jiffies(timeout))) 
{<BR>   if (!context->done.done) 
{<BR>-   static int spam_limit = 10;<BR>+   static 
int spam_limit = 5;<BR>    err = 
-EBUSY;<BR>    if (spam_limit-- > 
0)<BR>     mlx4_err(dev, "mlx4_cmd_wait: Command %02x 
completed with timeout after %d secs \n",<BR></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=608571215-30102008></SPAN></FONT> </DIV></BODY></HTML>