<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=WordSection1>
<p class=MsoNormal><span style='color:#1F497D'>Applied on 2883.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Thanks<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Tzachi<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ofw-bounces@lists.openfabrics.org [mailto:ofw-bounces@lists.openfabrics.org] <b>On
Behalf Of </b>Tzachi Dar<br>
<b>Sent:</b> Tuesday, August 31, 2010 11:47 PM<br>
<b>To:</b> Fab Tillier; ofw@lists.openfabrics.org<br>
<b>Subject:</b> Re: [ofw] patch: Remove livefish support from mthca<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span style='color:#1F497D'>For the last couple of years the
Mellanox burning tools are based on a standalone driver called mst.sys.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>This driver is a kernel driver
(not related to any hw) that allows the tools to work over all hw (even hw that
was created after the tool was already written).<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Please note that since this
driver is not a hw driver, there is no warning that the driver did not pass
WHQL.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Since the mst package is only
needed to update fw on mlnx hw it is not part of the open fabrics code base.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>In any case, even if we would
like to allow the old method of work (that is burning fw with a hw driver)
there is no need to have the code in the real driver.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>A better approach would have
been to create an empty driver all together or to have empty functions for
livefish in the mthca code. Today supporting livefish has been a very
problematic thing, since we had to make sure that many functions should
work with livefish. Just look at the mlx4_bus driver to see how many times
livefish is mentioned there.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Thanks<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Tzachi<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b>From:</b> Fab Tillier [mailto:ftillier@microsoft.com] <br>
<b>Sent:</b> Tuesday, August 31, 2010 7:59 PM<br>
<b>To:</b> Tzachi Dar; ofw@lists.openfabrics.org<br>
<b>Subject:</b> RE: patch: Remove livefish support from mthca<o:p></o:p></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span style='color:#1F497D'>More details please? How
do you update FW if you end up with out-of-date FW on MTHCA? What
replaces the live fish functionality?<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>-Fab<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b>From:</b> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <b>On Behalf Of </b>Tzachi Dar<br>
<b>Sent:</b> Tuesday, August 31, 2010 2:02 AM<br>
<b>To:</b> ofw@lists.openfabrics.org<br>
<b>Subject:</b> [ofw] patch: Remove livefish support from mthca<o:p></o:p></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/hca_data.h
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/hca_data.h
Mon Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -28,7 +28,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: hca_data.h 1630 2008-10-05 19:29:40Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: hca_data.h 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #ifndef __HCA_DATA_H__<o:p></o:p></p>
<p class=MsoNormal>@@ -239,7 +239,6 @@<o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal> setup_ci_interface(<o:p></o:p></p>
<p class=MsoNormal>
IN
const
ib_net64_t
ca_guid,<o:p></o:p></p>
<p class=MsoNormal>-
IN
const
int
is_livefish,<o:p></o:p></p>
<p class=MsoNormal>
OUT
ci_interface_t
*p_interface );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal>@@ -324,10 +323,6 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal> mlnx_memory_if(<o:p></o:p></p>
<p class=MsoNormal>-
IN
OUT
ci_interface_t
*p_interface );<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-void<o:p></o:p></p>
<p class=MsoNormal>-mlnx_memory_if_livefish(<o:p></o:p></p>
<p class=MsoNormal>
IN
OUT
ci_interface_t
*p_interface );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/hca_memory.c Tue Apr 27 18:49:06
2010<o:p></o:p></p>
<p class=MsoNormal>+++ hw/mthca/kernel/hca_memory.c Mon Jun 28
10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -28,7 +28,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: hca_memory.c 2019 2009-03-09 08:36:31Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: hca_memory.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -136,17 +136,6 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER(HCA_DBG_MEMORY);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(ib_pd_p->device))) {<o:p></o:p></p>
<p class=MsoNormal>-
mr_p = kzalloc(sizeof *mr_p, GFP_KERNEL);<o:p></o:p></p>
<p class=MsoNormal>-
if (!mr_p) {<o:p></o:p></p>
<p class=MsoNormal>-
status = IB_INSUFFICIENT_MEMORY;<o:p></o:p></p>
<p class=MsoNormal>-
goto err_mem;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
mr_p->device = ib_pd_p->device;<o:p></o:p></p>
<p class=MsoNormal>-
mr_p->pd = ib_pd_p;<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
// sanity checks<o:p></o:p></p>
<p class=MsoNormal>
if( !cl_is_blockable() ) {<o:p></o:p></p>
<p class=MsoNormal>
status = IB_UNSUPPORTED;<o:p></o:p></p>
<p class=MsoNormal>@@ -181,7 +170,6 @@<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
// results<o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
if (ph_mr) *ph_mr =
(ib_mr_handle_t)mr_p;<o:p></o:p></p>
<p class=MsoNormal>
*p_lkey = mr_p->lkey;<o:p></o:p></p>
<p class=MsoNormal>
*p_rkey = cl_hton32( mr_p->rkey );<o:p></o:p></p>
<p class=MsoNormal>@@ -191,7 +179,6 @@<o:p></o:p></p>
<p class=MsoNormal> err_reg_phys_mr:<o:p></o:p></p>
<p class=MsoNormal> err_invalid_parm:<o:p></o:p></p>
<p class=MsoNormal> err_unsupported:<o:p></o:p></p>
<p class=MsoNormal>-err_mem:<o:p></o:p></p>
<p class=MsoNormal>
if (status != IB_SUCCESS) <o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_MEMORY,<o:p></o:p></p>
<p class=MsoNormal>@@ -288,15 +275,9 @@<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
ib_api_status_t
status;<o:p></o:p></p>
<p class=MsoNormal>
int err;<o:p></o:p></p>
<p class=MsoNormal>-
struct ib_mr *ib_mr = (struct ib_mr *)h_mr;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER(HCA_DBG_SHIM);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(ib_mr->device))) {<o:p></o:p></p>
<p class=MsoNormal>-
kfree(ib_mr);<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
// sanity checks<o:p></o:p></p>
<p class=MsoNormal>
if( !cl_is_blockable() ) {<o:p></o:p></p>
<p class=MsoNormal>
status = IB_UNSUPPORTED;<o:p></o:p></p>
<p class=MsoNormal>@@ -312,7 +293,6 @@<o:p></o:p></p>
<p class=MsoNormal>
goto err_dereg_mr;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
status = IB_SUCCESS;<o:p></o:p></p>
<p class=MsoNormal>
<o:p></o:p></p>
<p class=MsoNormal> err_dereg_mr:<o:p></o:p></p>
<p class=MsoNormal>@@ -589,13 +569,4 @@<o:p></o:p></p>
<p class=MsoNormal>
p_interface->query_mw = mlnx_query_mw;<o:p></o:p></p>
<p class=MsoNormal>
p_interface->destroy_mw = mlnx_destroy_mw;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-void<o:p></o:p></p>
<p class=MsoNormal>-mlnx_memory_if_livefish(<o:p></o:p></p>
<p class=MsoNormal>-
IN OUT
ci_interface_t
*p_interface )<o:p></o:p></p>
<p class=MsoNormal>-{<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->register_pmr = mlnx_register_pmr;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->deregister_mr = mlnx_deregister_mr;<o:p></o:p></p>
<p class=MsoNormal>-}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/hca_pnp.c
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/hca_pnp.c
Mon Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -238,9 +238,7 @@<o:p></o:p></p>
<p class=MsoNormal>
return NULL;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
setup_ci_interface( p_ext->hca.guid,<o:p></o:p></p>
<p class=MsoNormal>-
!!mthca_is_livefish(p_ext->hca.mdev),<o:p></o:p></p>
<p class=MsoNormal>-
pIfc );<o:p></o:p></p>
<p class=MsoNormal>+
setup_ci_interface( p_ext->hca.guid, pIfc );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
pIfc->p_hca_obj = &p_ext->hca.hob;<o:p></o:p></p>
<p class=MsoNormal>
pIfc->vend_id = (uint32_t)p_ext->hcaConfig.VendorID;<o:p></o:p></p>
<p class=MsoNormal>@@ -276,10 +274,6 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER( HCA_DBG_PNP );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
// there will be no resources for "livefish" (PCI memory controller
mode)<o:p></o:p></p>
<p class=MsoNormal>-
if (!pHcaResList || !pHostResList)<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>
p_ext = (hca_dev_ext_t*)p_dev_obj->DeviceExtension;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
// store the bus number for reset of Tavor<o:p></o:p></p>
<p class=MsoNormal>@@ -304,16 +298,16 @@<o:p></o:p></p>
<p class=MsoNormal>
if( pHcaRes->Type == CmResourceTypeInterrupt )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
p_ext->interruptInfo = *pHostRes;<o:p></o:p></p>
<p class=MsoNormal>-
if ( g_processor_affinity == 0xFFFFFFFF ) <o:p></o:p></p>
<p class=MsoNormal>+
if ( g_processor_affinity == 0xFFFFFFFF ) <o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>-
/* <o:p></o:p></p>
<p class=MsoNormal>+
/* <o:p></o:p></p>
<p class=MsoNormal>
* Calculate the mask of the last processor<o:p></o:p></p>
<p class=MsoNormal>
*/<o:p></o:p></p>
<p class=MsoNormal>
KAFFINITY
n_active_processors_bitmask;<o:p></o:p></p>
<p class=MsoNormal>
uint32_t
last_processor_mask = 0 , tmp_processor_mask = 1;<o:p></o:p></p>
<p class=MsoNormal>
<o:p></o:p></p>
<p class=MsoNormal>
n_active_processors_bitmask = KeQueryActiveProcessors();<o:p></o:p></p>
<p class=MsoNormal>-
while ( tmp_processor_mask & n_active_processors_bitmask )<o:p></o:p></p>
<p class=MsoNormal>+
while ( tmp_processor_mask & n_active_processors_bitmask )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
last_processor_mask = tmp_processor_mask;<o:p></o:p></p>
<p class=MsoNormal>
tmp_processor_mask = tmp_processor_mask << 1;<o:p></o:p></p>
<p class=MsoNormal>@@ -383,7 +377,6 @@<o:p></o:p></p>
<p class=MsoNormal>
status = STATUS_UNSUCCESSFUL;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
HCA_EXIT( HCA_DBG_PNP );<o:p></o:p></p>
<p class=MsoNormal>
return status;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>@@ -413,14 +406,6 @@<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-static int mthca_get_livefish_info(struct mthca_dev *mdev,
__be64 *node_guid, u32 *hw_id)<o:p></o:p></p>
<p class=MsoNormal>-{<o:p></o:p></p>
<p class=MsoNormal>-
*node_guid = cl_hton64((uint64_t)(ULONG_PTR)mdev);<o:p></o:p></p>
<p class=MsoNormal>-
mdev->ib_dev.node_guid = *node_guid;<o:p></o:p></p>
<p class=MsoNormal>-
*hw_id = 0;<o:p></o:p></p>
<p class=MsoNormal>-
return 0;<o:p></o:p></p>
<p class=MsoNormal>-}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal> static NTSTATUS<o:p></o:p></p>
<p class=MsoNormal> hca_start(<o:p></o:p></p>
<p class=MsoNormal>
IN
DEVICE_OBJECT* const
p_dev_obj,<o:p></o:p></p>
<p class=MsoNormal>@@ -432,6 +417,7 @@<o:p></o:p></p>
<p class=MsoNormal>
IO_STACK_LOCATION *pIoStack;<o:p></o:p></p>
<p class=MsoNormal>
POWER_STATE
powerState;<o:p></o:p></p>
<p class=MsoNormal>
DEVICE_DESCRIPTION devDesc;<o:p></o:p></p>
<p class=MsoNormal>+
int
err;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER( HCA_DBG_PNP );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -504,21 +490,13 @@<o:p></o:p></p>
<p class=MsoNormal>
return status;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
/*leo: get node GUID */<o:p></o:p></p>
<p class=MsoNormal>-
{<o:p></o:p></p>
<p class=MsoNormal>-
int err;<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(p_ext->hca.mdev)) <o:p></o:p></p>
<p class=MsoNormal>-
err = mthca_get_livefish_info( p_ext->hca.mdev, &p_ext->hca.guid,
&p_ext->hca.hw_ver );<o:p></o:p></p>
<p class=MsoNormal>-
else<o:p></o:p></p>
<p class=MsoNormal>-
err = mthca_get_dev_info( p_ext->hca.mdev, &p_ext->hca.guid,
&p_ext->hca.hw_ver );<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
if (err) {<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
//TODO: no cleanup on error<o:p></o:p></p>
<p class=MsoNormal>-
HCA_PRINT( TRACE_LEVEL_ERROR,HCA_DBG_PNP, <o:p></o:p></p>
<p class=MsoNormal>-
("can't get guid - mthca_query_port()"));<o:p></o:p></p>
<p class=MsoNormal>-
return STATUS_INSUFFICIENT_RESOURCES;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>+
err = mthca_get_dev_info( p_ext->hca.mdev, &p_ext->hca.guid,
&p_ext->hca.hw_ver );<o:p></o:p></p>
<p class=MsoNormal>+
if (err) {<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
//TODO: no cleanup on error<o:p></o:p></p>
<p class=MsoNormal>+
HCA_PRINT( TRACE_LEVEL_ERROR,HCA_DBG_PNP, <o:p></o:p></p>
<p class=MsoNormal>+
("can't get guid - mthca_query_port()"));<o:p></o:p></p>
<p class=MsoNormal>+
return STATUS_INSUFFICIENT_RESOURCES;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
/* queue HCA */<o:p></o:p></p>
<p class=MsoNormal>@@ -549,8 +527,7 @@<o:p></o:p></p>
<p class=MsoNormal>
DRV_VERSION, DRV_RELDATE<o:p></o:p></p>
<p class=MsoNormal>
));<o:p></o:p></p>
<p class=MsoNormal>
HCA_PRINT_EV(TRACE_LEVEL_INFORMATION ,HCA_DBG_LOW ,<o:p></o:p></p>
<p class=MsoNormal>-
("Flags %s%s%s%s%s%s%s\n", <o:p></o:p></p>
<p class=MsoNormal>-
(mdev->mthca_flags & MTHCA_FLAG_LIVEFISH) ? "Flash Recovery
Mode:" : "",<o:p></o:p></p>
<p class=MsoNormal>+
("Flags %s%s%s%s%s%s\n", <o:p></o:p></p>
<p class=MsoNormal>
(mdev->mthca_flags & MTHCA_FLAG_MEMFREE) ? "MemFree:" :
"",<o:p></o:p></p>
<p class=MsoNormal>
(mdev->mthca_flags & MTHCA_FLAG_NO_LAM) ? "NoLam:" :
"",<o:p></o:p></p>
<p class=MsoNormal>
(mdev->mthca_flags & MTHCA_FLAG_FMR) ? "Fmr:" : "",<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/hca_verbs.c
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/hca_verbs.c Mon
Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -28,7 +28,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: hca_verbs.c 2166 2009-05-12 13:24:37Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: hca_verbs.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -85,24 +85,20 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
ib_dev = &p_hca->mdev->ib_dev;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(p_hca->mdev)) <o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
HCA_PRINT(TRACE_LEVEL_INFORMATION ,HCA_DBG_SHIM,<o:p></o:p></p>
<p class=MsoNormal>
("context 0x%p\n", ca_context));<o:p></o:p></p>
<p class=MsoNormal>
if (pfn_async_event_cb) {<o:p></o:p></p>
<p class=MsoNormal>-
status = mlnx_hobs_set_cb(&p_hca->hob,<o:p></o:p></p>
<p class=MsoNormal>-
pfn_async_event_cb,<o:p></o:p></p>
<p class=MsoNormal>-
ca_context);<o:p></o:p></p>
<p class=MsoNormal>-
if (IB_SUCCESS != status) {<o:p></o:p></p>
<p class=MsoNormal>-
goto err_set_cb;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>+
status = mlnx_hobs_set_cb(&p_hca->hob,<o:p></o:p></p>
<p class=MsoNormal>+
pfn_async_event_cb,<o:p></o:p></p>
<p class=MsoNormal>+
ca_context);<o:p></o:p></p>
<p class=MsoNormal>+
if (IB_SUCCESS != status) {<o:p></o:p></p>
<p class=MsoNormal>+
goto err_set_cb;<o:p></o:p></p>
<p class=MsoNormal>+
}<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>
<o:p></o:p></p>
<p class=MsoNormal>
//TODO: do we need something for kernel users ?<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
// Return pointer to HOB object<o:p></o:p></p>
<p class=MsoNormal>-done: <o:p></o:p></p>
<p class=MsoNormal>
if (ph_ca) *ph_ca = &p_hca->hob;<o:p></o:p></p>
<p class=MsoNormal>
status = IB_SUCCESS;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -417,17 +413,9 @@<o:p></o:p></p>
<p class=MsoNormal> mlnx_close_ca (<o:p></o:p></p>
<p class=MsoNormal>
IN
ib_ca_handle_t
h_ca)<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>-
mlnx_hob_t
*hob_p = (mlnx_hob_t *)h_ca;<o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER(HCA_DBG_SHIM);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(MDEV_FROM_HOB( hob_p ))) <o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
mlnx_hobs_remove(h_ca);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
HCA_EXIT(HCA_DBG_SHIM);<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>
return IB_SUCCESS;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -541,10 +529,7 @@<o:p></o:p></p>
<p class=MsoNormal>
mlnx_hob_t
*hob_p = (mlnx_hob_t *)h_ca;<o:p></o:p></p>
<p class=MsoNormal>
hca_dev_ext_t *ext_p = EXT_FROM_HOB( hob_p );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(p_ucontext->device)))<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>
unmap_crspace_for_all(p_ucontext);<o:p></o:p></p>
<p class=MsoNormal>-done: <o:p></o:p></p>
<p class=MsoNormal>
cl_spinlock_acquire( &ext_p->uctx_lock );<o:p></o:p></p>
<p class=MsoNormal>
cl_qlist_remove_item( &ext_p->uctx_list, &p_ucontext->list_item
);<o:p></o:p></p>
<p class=MsoNormal>
cl_atomic_dec(&ext_p->usecnt);<o:p></o:p></p>
<p class=MsoNormal>@@ -931,7 +916,7 @@<o:p></o:p></p>
<p class=MsoNormal>
ib_api_status_t
status = IB_SUCCESS;<o:p></o:p></p>
<p class=MsoNormal>
struct ib_srq *ib_srq = (struct ib_srq *)h_srq;<o:p></o:p></p>
<p class=MsoNormal>
UNUSED_PARAM(p_umv_buf);<o:p></o:p></p>
<p class=MsoNormal>- <o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>
HCA_ENTER(HCA_DBG_SRQ);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
err = ibv_modify_srq(ib_srq, (void*)p_srq_attr, srq_attr_mask);<o:p></o:p></p>
<p class=MsoNormal>@@ -1649,7 +1634,6 @@<o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal> setup_ci_interface(<o:p></o:p></p>
<p class=MsoNormal>
IN
const
ib_net64_t
ca_guid,<o:p></o:p></p>
<p class=MsoNormal>-
IN
const
int
is_livefish,<o:p></o:p></p>
<p class=MsoNormal>
IN
OUT
ci_interface_t
*p_interface )<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>
cl_memclr(p_interface, sizeof(*p_interface));<o:p></o:p></p>
<p class=MsoNormal>@@ -1667,6 +1651,7 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
/* The real interface. */<o:p></o:p></p>
<p class=MsoNormal>
p_interface->open_ca = mlnx_open_ca;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->modify_ca = mlnx_modify_ca; <o:p></o:p></p>
<p class=MsoNormal>
p_interface->query_ca = mlnx_query_ca;<o:p></o:p></p>
<p class=MsoNormal>
p_interface->close_ca = mlnx_close_ca;<o:p></o:p></p>
<p class=MsoNormal>
p_interface->um_open_ca = mlnx_um_open;<o:p></o:p></p>
<p class=MsoNormal>@@ -1678,41 +1663,34 @@<o:p></o:p></p>
<p class=MsoNormal>
p_interface->deallocate_pd = mlnx_deallocate_pd;<o:p></o:p></p>
<p class=MsoNormal>
p_interface->vendor_call = fw_access_ctrl;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (is_livefish) {<o:p></o:p></p>
<p class=MsoNormal>-
mlnx_memory_if_livefish(p_interface);<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
else { <o:p></o:p></p>
<p class=MsoNormal>-
p_interface->modify_ca = mlnx_modify_ca; <o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->create_av = mlnx_create_av;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->query_av = mlnx_query_av;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->modify_av = mlnx_modify_av;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->destroy_av = mlnx_destroy_av;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->create_srq = mlnx_create_srq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->modify_srq = mlnx_modify_srq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->query_srq = mlnx_query_srq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->destroy_srq = mlnx_destroy_srq;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->create_qp = mlnx_create_qp;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->create_spl_qp = mlnx_create_spl_qp;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->modify_qp = mlnx_modify_qp;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->ndi_modify_qp = mlnx_ndi_modify_qp;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->query_qp = mlnx_query_qp;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->destroy_qp = mlnx_destroy_qp;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->create_cq = mlnx_create_cq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->resize_cq = mlnx_resize_cq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->query_cq = mlnx_query_cq;<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->destroy_cq = mlnx_destroy_cq;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_interface->local_mad = mlnx_local_mad;<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
mlnx_memory_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal>-
mlnx_direct_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal>-
mlnx_mcast_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->create_av = mlnx_create_av;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->query_av = mlnx_query_av;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->modify_av = mlnx_modify_av;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->destroy_av = mlnx_destroy_av;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->create_srq = mlnx_create_srq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->modify_srq = mlnx_modify_srq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->query_srq = mlnx_query_srq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->destroy_srq = mlnx_destroy_srq;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->create_qp = mlnx_create_qp;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->create_spl_qp = mlnx_create_spl_qp;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->modify_qp = mlnx_modify_qp;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->ndi_modify_qp = mlnx_ndi_modify_qp;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->query_qp = mlnx_query_qp;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->destroy_qp = mlnx_destroy_qp;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->create_cq = mlnx_create_cq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->resize_cq = mlnx_resize_cq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->query_cq = mlnx_query_cq;<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->destroy_cq = mlnx_destroy_cq;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
p_interface->local_mad = mlnx_local_mad;<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
mlnx_memory_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal>+
mlnx_direct_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal>+
mlnx_mcast_if(p_interface);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
return;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/mt_memory.h Tue Apr 27 18:49:06
2010<o:p></o:p></p>
<p class=MsoNormal>+++ hw/mthca/kernel/mt_memory.h Mon Jun 28
10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -52,13 +52,13 @@<o:p></o:p></p>
<p class=MsoNormal>
MT_ASSERT( KeGetCurrentIrql() <= DISPATCH_LEVEL );<o:p></o:p></p>
<p class=MsoNormal>
switch (gfp_mask) {<o:p></o:p></p>
<p class=MsoNormal>
case GFP_ATOMIC:<o:p></o:p></p>
<p class=MsoNormal>-
ptr = ExAllocatePoolWithTag( NonPagedPool, bsize, MT_TAG_ATOMIC );<o:p></o:p></p>
<p class=MsoNormal>+
ptr = ExAllocatePoolWithTagSafeEx( NonPagedPool, bsize, MT_TAG_ATOMIC );<o:p></o:p></p>
<p class=MsoNormal>
break;<o:p></o:p></p>
<p class=MsoNormal>
case GFP_KERNEL:<o:p></o:p></p>
<p class=MsoNormal>-
ptr = ExAllocatePoolWithTag( NonPagedPool, bsize, MT_TAG_KERNEL );<o:p></o:p></p>
<p class=MsoNormal>+
ptr = ExAllocatePoolWithTagSafeEx( NonPagedPool, bsize, MT_TAG_KERNEL );<o:p></o:p></p>
<p class=MsoNormal>
break;<o:p></o:p></p>
<p class=MsoNormal>
case GFP_HIGHUSER:<o:p></o:p></p>
<p class=MsoNormal>-
ptr = ExAllocatePoolWithTag( NonPagedPool, bsize, MT_TAG_HIGH );<o:p></o:p></p>
<p class=MsoNormal>+
ptr = ExAllocatePoolWithTagSafeEx( NonPagedPool, bsize, MT_TAG_HIGH );<o:p></o:p></p>
<p class=MsoNormal>
break;<o:p></o:p></p>
<p class=MsoNormal>
default:<o:p></o:p></p>
<p class=MsoNormal>
cl_dbg_out("kmalloc: unsupported flag %d\n", gfp_mask);<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/mt_verbs.c
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/mt_verbs.c
Mon Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -33,7 +33,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: mt_verbs.c 1435 2008-07-23 20:09:45Z shefty $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: mt_verbs.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #include <ib_verbs.h><o:p></o:p></p>
<p class=MsoNormal>@@ -123,9 +123,6 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> int ibv_dealloc_pd(struct ib_pd *pd)<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(pd->device))) <o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
// we need first to release list of AV MRs to decrease pd->usecnt<o:p></o:p></p>
<p class=MsoNormal>
if (pd->ucontext) {<o:p></o:p></p>
<p class=MsoNormal>
struct ib_mr *ib_mr, *tmp;<o:p></o:p></p>
<p class=MsoNormal>@@ -141,7 +138,6 @@<o:p></o:p></p>
<p class=MsoNormal>
return -EBUSY;<o:p></o:p></p>
<p class=MsoNormal>
}
<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
HCA_PRINT(TRACE_LEVEL_INFORMATION ,HCA_DBG_CQ ,("PD%d use cnt %d,
pd_handle %p, ctx %p \n", <o:p></o:p></p>
<p class=MsoNormal>
((struct mthca_pd*)pd)->pd_num, pd->usecnt, pd, pd->ucontext));<o:p></o:p></p>
<p class=MsoNormal>
// direct call is a must, because "lifefish" devices doesn't fill
driver i/f table<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/mthca.inx
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/mthca.inx
Tue Aug 31 11:59:17 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -122,36 +122,24 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> [HCA.DeviceSection.ntx86]<o:p></o:p></p>
<p class=MsoNormal> %MT23108.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5A44<o:p></o:p></p>
<p class=MsoNormal>-%MT23109.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5A45<o:p></o:p></p>
<p class=MsoNormal> %MT25208.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6278<o:p></o:p></p>
<p class=MsoNormal>-%MT25209.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6279<o:p></o:p></p>
<p class=MsoNormal> %MT25218.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6282<o:p></o:p></p>
<p class=MsoNormal> %MT24204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8C<o:p></o:p></p>
<p class=MsoNormal>-%MT24205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8D<o:p></o:p></p>
<p class=MsoNormal> %MT25204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6274<o:p></o:p></p>
<p class=MsoNormal>-%MT25205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6275<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> [HCA.DeviceSection.ntamd64]<o:p></o:p></p>
<p class=MsoNormal> %MT23108.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5A44<o:p></o:p></p>
<p class=MsoNormal>-%MT23109.DeviceDesc%=MTHCA.DDInstall, PCI\VEN_15B3&DEV_5A45<o:p></o:p></p>
<p class=MsoNormal> %MT25208.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6278<o:p></o:p></p>
<p class=MsoNormal>-%MT25209.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6279<o:p></o:p></p>
<p class=MsoNormal> %MT25218.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6282<o:p></o:p></p>
<p class=MsoNormal> %MT24204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8C<o:p></o:p></p>
<p class=MsoNormal>-%MT24205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8D<o:p></o:p></p>
<p class=MsoNormal> %MT25204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6274<o:p></o:p></p>
<p class=MsoNormal>-%MT25205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6275<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> [HCA.DeviceSection.ntia64]<o:p></o:p></p>
<p class=MsoNormal> %MT23108.DeviceDesc%=MTHCA.DDInstall, PCI\VEN_15B3&DEV_5A44<o:p></o:p></p>
<p class=MsoNormal>-%MT23109.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5A45<o:p></o:p></p>
<p class=MsoNormal> %MT25208.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6278<o:p></o:p></p>
<p class=MsoNormal>-%MT25209.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6279<o:p></o:p></p>
<p class=MsoNormal> %MT25218.DeviceDesc%=MTHCA.DDInstall, PCI\VEN_15B3&DEV_6282<o:p></o:p></p>
<p class=MsoNormal> %MT24204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8C<o:p></o:p></p>
<p class=MsoNormal>-%MT24205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_5E8D<o:p></o:p></p>
<p class=MsoNormal> %MT25204.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6274<o:p></o:p></p>
<p class=MsoNormal>-%MT25205.DeviceDesc%=MTHCA.DDInstall,
PCI\VEN_15B3&DEV_6275<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> [MTHCA.DDInstall.ntx86]<o:p></o:p></p>
<p class=MsoNormal> CopyFiles = MTHCA.CopyFiles<o:p></o:p></p>
<p class=MsoNormal>@@ -449,14 +437,10 @@<o:p></o:p></p>
<p class=MsoNormal> MTL="Mellanox Technologies Ltd."<o:p></o:p></p>
<p class=MsoNormal> MTHCA.ServiceDesc = "Driver for Mellanox
InfiniHost Devices"<o:p></o:p></p>
<p class=MsoNormal> MT23108.DeviceDesc="InfiniHost (MT23108) -
Mellanox InfiniBand HCA"<o:p></o:p></p>
<p class=MsoNormal>-MT23109.DeviceDesc="InfiniHost (MT23109) - Mellanox
InfiniBand HCA (burner device)"<o:p></o:p></p>
<p class=MsoNormal> MT25208.DeviceDesc="InfiniHost (MT25208) -
Mellanox InfiniBand HCA for PCI Express"<o:p></o:p></p>
<p class=MsoNormal>-MT25209.DeviceDesc="InfiniHost (MT25209) - Mellanox
InfiniBand HCA for PCI Express (burner device)"<o:p></o:p></p>
<p class=MsoNormal> MT25218.DeviceDesc="InfiniHost III Ex (MT25218) -
Mellanox InfiniBand HCA for PCI Express"<o:p></o:p></p>
<p class=MsoNormal> MT24204.DeviceDesc="InfiniHost III Lx (MT24204) -
Mellanox InfiniBand HCA for PCI Express"<o:p></o:p></p>
<p class=MsoNormal>-MT24205.DeviceDesc="InfiniHost III Lx (MT24205) -
Mellanox InfiniBand HCA for PCI Express (burner device)"<o:p></o:p></p>
<p class=MsoNormal> MT25204.DeviceDesc="InfiniHost III Lx (MT25204) -
Mellanox InfiniBand HCA for PCI Express"<o:p></o:p></p>
<p class=MsoNormal>-MT25205.DeviceDesc="InfiniHost III Lx (MT25205) -
Mellanox InfiniBand HCA for PCI Express (burner device)"<o:p></o:p></p>
<p class=MsoNormal> DiskId = "Mellanox InfiniBand HCA installation
disk"<o:p></o:p></p>
<p class=MsoNormal> Ibbus.ServiceDesc = "InfiniBand Bus/AL (Filter
Driver)"<o:p></o:p></p>
<p class=MsoNormal> WinVerbs.ServiceDesc = "WinVerbs Service"<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/mthca_dev.h Tue
Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/mthca_dev.h Mon Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -34,7 +34,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: mthca_dev.h 1942 2009-02-11 10:49:02Z tzachid $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: mthca_dev.h 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #ifndef MTHCA_DEV_H<o:p></o:p></p>
<p class=MsoNormal>@@ -64,7 +64,6 @@<o:p></o:p></p>
<p class=MsoNormal>
MTHCA_FLAG_MEMFREE = 1 << 7,<o:p></o:p></p>
<p class=MsoNormal>
MTHCA_FLAG_PCIE = 1 <<
8,<o:p></o:p></p>
<p class=MsoNormal>
MTHCA_FLAG_SINAI_OPT = 1 << 9,<o:p></o:p></p>
<p class=MsoNormal>-
MTHCA_FLAG_LIVEFISH = 1 << 10<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> enum {<o:p></o:p></p>
<p class=MsoNormal>@@ -594,15 +593,6 @@<o:p></o:p></p>
<p class=MsoNormal>
ULONG pi_nDataItems,<o:p></o:p></p>
<p class=MsoNormal>
...<o:p></o:p></p>
<p class=MsoNormal>
);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-static inline int mthca_is_livefish(struct mthca_dev *mdev)<o:p></o:p></p>
<p class=MsoNormal>-{<o:p></o:p></p>
<p class=MsoNormal>-
if(mdev == NULL) {<o:p></o:p></p>
<p class=MsoNormal>-
return TRUE;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
return mdev->mthca_flags & MTHCA_FLAG_LIVEFISH;<o:p></o:p></p>
<p class=MsoNormal>-}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> void mthca_get_av_params(
struct mthca_ah *ah_p, u8 *port_num, __be16 *dlid, u8 *sr, u8 *path_bits );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/kernel/mthca_main.c Tue Apr 27
18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++ hw/mthca/kernel/mthca_main.c Mon Jun
28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -31,7 +31,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: mthca_main.c 2142 2009-05-03 09:32:01Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: mthca_main.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #include "mthca_dev.h"<o:p></o:p></p>
<p class=MsoNormal>@@ -69,8 +69,7 @@<o:p></o:p></p>
<p class=MsoNormal>
TAVOR,
/*
MT23108
*/<o:p></o:p></p>
<p class=MsoNormal>
ARBEL_COMPAT,
/* MT25208 in Tavor compat mode */<o:p></o:p></p>
<p class=MsoNormal>
ARBEL_NATIVE,
/* MT25218 with extended features */<o:p></o:p></p>
<p class=MsoNormal>-
SINAI,
/* MT25204 */<o:p></o:p></p>
<p class=MsoNormal>-
LIVEFISH
/* a burning device */<o:p></o:p></p>
<p class=MsoNormal>+
SINAI
/* MT25204 */<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #define MTHCA_FW_VER(major, minor, subminor) \<o:p></o:p></p>
<p class=MsoNormal>@@ -85,8 +84,7 @@<o:p></o:p></p>
<p class=MsoNormal>
{ MTHCA_FW_VER(3, 3, 2), MTHCA_FW_VER(3, 5, 0), 0, 0
}, /* TAVOR */<o:p></o:p></p>
<p class=MsoNormal>
{ MTHCA_FW_VER(4, 7, 0), MTHCA_FW_VER(4, 8, 200), 0, 1 }, /*
ARBEL_COMPAT */<o:p></o:p></p>
<p class=MsoNormal>
{ MTHCA_FW_VER(5, 1, 0), MTHCA_FW_VER(5, 3, 0), 1, 1
}, /* ARBEL_NATIVE */<o:p></o:p></p>
<p class=MsoNormal>-
{ MTHCA_FW_VER(1, 0, 800), MTHCA_FW_VER(1, 2, 0), 1, 1 }, /*
SINAI */<o:p></o:p></p>
<p class=MsoNormal>-
{ MTHCA_FW_VER(0, 0, 0), MTHCA_FW_VER(0, 0, 0), 0, 0
}
/* LIVEFISH */<o:p></o:p></p>
<p class=MsoNormal>+
{ MTHCA_FW_VER(1, 0, 800), MTHCA_FW_VER(1, 2, 0), 1, 1
} /* SINAI */<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -108,15 +106,6 @@<o:p></o:p></p>
<p class=MsoNormal>
HCA(TOPSPIN, ARBEL, ARBEL_NATIVE),<o:p></o:p></p>
<p class=MsoNormal>
HCA(TOPSPIN, SINAI_OLD, SINAI),<o:p></o:p></p>
<p class=MsoNormal>
HCA(TOPSPIN, SINAI, SINAI),<o:p></o:p></p>
<p class=MsoNormal>-
// live fishes<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX, TAVOR_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX,
ARBEL_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX,
SINAI_OLD_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX,
SINAI_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN,
TAVOR_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN, ARBEL_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN, SINAI_OLD_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN,
SINAI_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> #define MTHCA_PCI_TABLE_SIZE
(sizeof(mthca_pci_table)/sizeof(struct pci_device_id))<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -967,7 +956,6 @@<o:p></o:p></p>
<p class=MsoNormal>
InitializeListHead(&ext->hca.hob.event_list);<o:p></o:p></p>
<p class=MsoNormal>
KeInitializeSpinLock(&ext->hca.hob.event_list_lock);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-run_as_livefish:<o:p></o:p></p>
<p class=MsoNormal>
/* allocate mdev structure */<o:p></o:p></p>
<p class=MsoNormal>
mdev = kzalloc(sizeof *mdev, GFP_KERNEL);<o:p></o:p></p>
<p class=MsoNormal>
if (!mdev) {<o:p></o:p></p>
<p class=MsoNormal>@@ -982,10 +970,6 @@<o:p></o:p></p>
<p class=MsoNormal>
mdev->ext =
ext;
/* pointer to DEVICE OBJECT extension */<o:p></o:p></p>
<p class=MsoNormal>
mdev->hca_type = p_id->driver_data;<o:p></o:p></p>
<p class=MsoNormal>
mdev->ib_dev.mdev = mdev;<o:p></o:p></p>
<p class=MsoNormal>-
if (p_id->driver_data == LIVEFISH)<o:p></o:p></p>
<p class=MsoNormal>-
mdev->mthca_flags |= MTHCA_FLAG_LIVEFISH;<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(mdev))<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>
if (ext->hca_hidden)<o:p></o:p></p>
<p class=MsoNormal>
mdev->mthca_flags |= MTHCA_FLAG_DDR_HIDDEN;<o:p></o:p></p>
<p class=MsoNormal>
if (mthca_hca_table[p_id->driver_data].is_memfree)<o:p></o:p></p>
<p class=MsoNormal>@@ -1042,7 +1026,6 @@<o:p></o:p></p>
<p class=MsoNormal>
goto err_cleanup;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
done:<o:p></o:p></p>
<p class=MsoNormal>
ext->hca.mdev = mdev;<o:p></o:p></p>
<p class=MsoNormal>
mdev->state = MTHCA_DEV_INITIALIZED;<o:p></o:p></p>
<p class=MsoNormal>
return 0;<o:p></o:p></p>
<p class=MsoNormal>@@ -1071,20 +1054,6 @@<o:p></o:p></p>
<p class=MsoNormal> err_free_dev:<o:p></o:p></p>
<p class=MsoNormal>
kfree(mdev);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
/* we failed device initialization - try to simulate "livefish"
device to facilitate using FW burning tools */<o:p></o:p></p>
<p class=MsoNormal>-
{<o:p></o:p></p>
<p class=MsoNormal>-
USHORT dev_id = ext->hcaConfig.DeviceID;<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>-
if (dev_id == PCI_DEVICE_ID_MELLANOX_ARBEL)<o:p></o:p></p>
<p class=MsoNormal>-
dev_id = PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT;<o:p></o:p></p>
<p class=MsoNormal>-
p_id = mthca_find_pci_dev( (unsigned)ext->hcaConfig.VendorID, dev_id + 1 );<o:p></o:p></p>
<p class=MsoNormal>-
if (p_id == NULL) {<o:p></o:p></p>
<p class=MsoNormal>-
status = STATUS_NO_SUCH_DEVICE;<o:p></o:p></p>
<p class=MsoNormal>-
goto end;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
goto run_as_livefish;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal> end:<o:p></o:p></p>
<p class=MsoNormal>
return status;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>@@ -1098,8 +1067,6 @@<o:p></o:p></p>
<p class=MsoNormal>
ext->hca.mdev = NULL;<o:p></o:p></p>
<p class=MsoNormal>
if (mdev) {<o:p></o:p></p>
<p class=MsoNormal>
mdev->state = MTHCA_DEV_UNINITIALIZED;<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(mdev))<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>
mthca_unregister_device(mdev);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
for (p = 1; p <= mdev->limits.num_ports; ++p)<o:p></o:p></p>
<p class=MsoNormal>@@ -1120,7 +1087,6 @@<o:p></o:p></p>
<p class=MsoNormal>
mthca_cleanup_uar_table(mdev);<o:p></o:p></p>
<p class=MsoNormal>
mthca_close_hca(mdev);<o:p></o:p></p>
<p class=MsoNormal>
mthca_cmd_cleanup(mdev);<o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
kfree(mdev);<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>--- hw/mthca/kernel/mthca_provider.c
Tue Apr 27 18:49:06 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/kernel/mthca_provider.c
Mon Jun 28 10:52:26 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -31,7 +31,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: mthca_provider.c 2033 2009-03-17 16:05:55Z
stansmith $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: mthca_provider.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #include <ib_smi.h><o:p></o:p></p>
<p class=MsoNormal>@@ -69,15 +69,6 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
RtlZeroMemory(props, sizeof *props);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(mdev)) {<o:p></o:p></p>
<p class=MsoNormal>-
props->max_pd = 1;<o:p></o:p></p>
<p class=MsoNormal>-
if ( !mdev || !mdev->ext )<o:p></o:p></p>
<p class=MsoNormal>-
return err;<o:p></o:p></p>
<p class=MsoNormal>-
props->vendor_id = mdev->ext->hcaConfig.VendorID;<o:p></o:p></p>
<p class=MsoNormal>-
props->vendor_part_id = mdev->ext->hcaConfig.DeviceID;<o:p></o:p></p>
<p class=MsoNormal>-
return 0;<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
in_mad = kzalloc(sizeof *in_mad, GFP_KERNEL);<o:p></o:p></p>
<p class=MsoNormal>
out_mad = kmalloc(sizeof *out_mad, GFP_KERNEL);<o:p></o:p></p>
<p class=MsoNormal>
if (!in_mad || !out_mad)<o:p></o:p></p>
<p class=MsoNormal>@@ -354,9 +345,6 @@<o:p></o:p></p>
<p class=MsoNormal>
goto err_nomem;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(ibdev)))<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-
<o:p></o:p></p>
<p class=MsoNormal>
err = mthca_uar_alloc(to_mdev(ibdev), &context->uar);<o:p></o:p></p>
<p class=MsoNormal>
if (err) <o:p></o:p></p>
<p class=MsoNormal>
goto err_uar_alloc;<o:p></o:p></p>
<p class=MsoNormal>@@ -399,7 +387,6 @@<o:p></o:p></p>
<p class=MsoNormal>
goto err_init_user;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
err = ib_copy_to_umv_buf(p_umv_buf, &uresp, sizeof uresp);<o:p></o:p></p>
<p class=MsoNormal>
if (err) <o:p></o:p></p>
<p class=MsoNormal>
goto err_copy_to_umv_buf;<o:p></o:p></p>
<p class=MsoNormal>@@ -428,17 +415,14 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> int mthca_dealloc_ucontext(struct ib_ucontext
*context)<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>-
struct mthca_ucontext
*mucontext = to_mucontext(context);<o:p></o:p></p>
<p class=MsoNormal>+
struct
mthca_ucontext
*mucontext = to_mucontext(context);<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(context->device)))<o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>
mthca_cleanup_user_db_tab(to_mdev(context->device), &mucontext->uar,<o:p></o:p></p>
<p class=MsoNormal>-
mucontext->db_tab);<o:p></o:p></p>
<p class=MsoNormal>+
mucontext->db_tab);<o:p></o:p></p>
<p class=MsoNormal>
MmUnmapLockedPages( mucontext->ibucontext.user_uar, mucontext->mdl );<o:p></o:p></p>
<p class=MsoNormal>
IoFreeMdl(mucontext->mdl);<o:p></o:p></p>
<p class=MsoNormal>
iounmap(mucontext->kva, PAGE_SIZE);<o:p></o:p></p>
<p class=MsoNormal>
mthca_uar_free(to_mdev(context->device), &mucontext->uar);<o:p></o:p></p>
<p class=MsoNormal>-done: <o:p></o:p></p>
<p class=MsoNormal>
kfree(mucontext);<o:p></o:p></p>
<p class=MsoNormal>
<o:p></o:p></p>
<p class=MsoNormal>
return 0;<o:p></o:p></p>
<p class=MsoNormal>@@ -466,15 +450,11 @@<o:p></o:p></p>
<p class=MsoNormal>
goto err_mem;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(ibdev))) <o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
err = mthca_pd_alloc(to_mdev(ibdev), !context, pd);<o:p></o:p></p>
<p class=MsoNormal>
if (err) {<o:p></o:p></p>
<p class=MsoNormal>
goto err_pd_alloc;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-done:<o:p></o:p></p>
<p class=MsoNormal>
if (p_umv_buf && p_umv_buf->command) {<o:p></o:p></p>
<p class=MsoNormal>
resp.pd_handle = (u64)(UINT_PTR)pd;<o:p></o:p></p>
<p class=MsoNormal>
resp.pdn = pd->pd_num;<o:p></o:p></p>
<p class=MsoNormal>@@ -497,12 +477,7 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> int mthca_dealloc_pd(struct ib_pd *pd)<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>-
if (mthca_is_livefish(to_mdev(pd->device))) <o:p></o:p></p>
<p class=MsoNormal>-
goto done;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>
mthca_pd_free(to_mdev(pd->device), to_mpd(pd));<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-done: <o:p></o:p></p>
<p class=MsoNormal>
kfree(pd);<o:p></o:p></p>
<p class=MsoNormal>
return 0;<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal>---
hw/mthca/user/mlnx_uvp.c
Tue Apr 27 18:49:27 2010<o:p></o:p></p>
<p class=MsoNormal>+++
hw/mthca/user/mlnx_uvp.c
Mon Jun 28 10:52:27 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -29,7 +29,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: mlnx_uvp.c 593 2007-02-15 07:39:49Z sleybo $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: mlnx_uvp.c 5526 2010-02-03 10:10:56Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #include "mt_l2w.h"<o:p></o:p></p>
<p class=MsoNormal>@@ -71,23 +71,6 @@<o:p></o:p></p>
<p class=MsoNormal> #define
PCI_VENDOR_ID_TOPSPIN
0x1867<o:p></o:p></p>
<p class=MsoNormal> #endif<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-/* live fishes */<o:p></o:p></p>
<p class=MsoNormal>-#ifndef PCI_DEVICE_ID_MELLANOX_TAVOR_BD<o:p></o:p></p>
<p class=MsoNormal>-#define
PCI_DEVICE_ID_MELLANOX_TAVOR_BD
0x5a45<o:p></o:p></p>
<p class=MsoNormal>-#endif<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-#ifndef PCI_DEVICE_ID_MELLANOX_ARBEL_BD<o:p></o:p></p>
<p class=MsoNormal>-#define
PCI_DEVICE_ID_MELLANOX_ARBEL_BD
0x6279<o:p></o:p></p>
<p class=MsoNormal>-#endif<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-#ifndef PCI_DEVICE_ID_MELLANOX_SINAI_OLD_BD<o:p></o:p></p>
<p class=MsoNormal>-#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD_BD
0x5e8d<o:p></o:p></p>
<p class=MsoNormal>-#endif<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-#ifndef PCI_DEVICE_ID_MELLANOX_SINAI_BD<o:p></o:p></p>
<p class=MsoNormal>-#define
PCI_DEVICE_ID_MELLANOX_SINAI_BD
0x6275<o:p></o:p></p>
<p class=MsoNormal>-#endif<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #define HCA(v, d, t) \<o:p></o:p></p>
<p class=MsoNormal>
{
PCI_VENDOR_ID_##v,
PCI_DEVICE_ID_MELLANOX_##d, MTHCA_##t }<o:p></o:p></p>
<p class=MsoNormal>@@ -107,15 +90,6 @@<o:p></o:p></p>
<p class=MsoNormal>
HCA( TOPSPIN,
ARBEL,
ARBEL),<o:p></o:p></p>
<p class=MsoNormal>
HCA( TOPSPIN,
SINAI_OLD,
ARBEL),<o:p></o:p></p>
<p class=MsoNormal>
HCA( TOPSPIN,
SINAI,
ARBEL),<o:p></o:p></p>
<p class=MsoNormal>-
// live fishes<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX, TAVOR_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX, ARBEL_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX, SINAI_OLD_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(MELLANOX, SINAI_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN,
TAVOR_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN,
ARBEL_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN, SINAI_OLD_BD, LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal>-
HCA(TOPSPIN,
SINAI_BD,
LIVEFISH),<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> static struct ibv_context_ops mthca_ctx_ops = {<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>