<html><body>
<p><tt>Linas Vepstas &lt;linasvepstas@gmail.com&gt; wrote on 07/24/2009 05:30:09 PM:<br>
<br>
&gt; 2009/7/24 Richard Lary &lt;rlary@us.ibm.com&gt;:<br>
&gt; &gt; Linas Vepstas &lt;linasvepstas@gmail.com&gt; wrote on 07/23/2009 07:44:33 AM:<br>
&gt; &gt;<br>
&gt; &gt;&gt; 2009/7/15 Mike Mason &lt;mmlnx@us.ibm.com&gt;:<br>
&gt; &gt;&gt; &gt; By default, EEH does what's known as a &quot;hot reset&quot; during error recovery<br>
&gt; &gt;&gt; &gt; of<br>
&gt; &gt;&gt; &gt; a PCI Express device.  We've found a case where the device needs a<br>
&gt; &gt;&gt; &gt; &quot;fundamental reset&quot; to recover properly.  The current PCI error recovery<br>
&gt; &gt;&gt; &gt; and<br>
&gt; &gt;&gt; &gt; EEH frameworks do not support this distinction.<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; The attached patch (courtesy of Richard Lary) adds a bit field to<br>
&gt; &gt;&gt; &gt; pci_dev<br>
&gt; &gt;&gt; &gt; that indicates whether the device requires a fundamental reset during<br>
&gt; &gt;&gt; &gt; error<br>
&gt; &gt;&gt; &gt; recovery.  This bit can be checked by EEH to determine which reset type<br>
&gt; &gt;&gt; &gt; is<br>
&gt; &gt;&gt; &gt; required.<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; This patch supersedes the previously submitted patch that implemented a<br>
&gt; &gt;&gt; &gt; reset type callback.<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; Please review and let me know of any concerns.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; I like this patch a *lot* better .. it is vastly simpler, more direct.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; diff -uNrp a/include/linux/pci.h b/include/linux/pci.h<br>
&gt; &gt;&gt; &gt; --- a/include/linux/pci.h       2009-07-13 14:25:37.000000000 -0700<br>
&gt; &gt;&gt; &gt; +++ b/include/linux/pci.h       2009-07-15 10:25:37.000000000 -0700<br>
&gt; &gt;&gt; &gt; @@ -273,6 +273,7 @@ struct pci_dev {<br>
&gt; &gt;&gt; &gt;        unsigned int    ari_enabled:1;  /* ARI forwarding */<br>
&gt; &gt;&gt; &gt;        unsigned int    is_managed:1;<br>
&gt; &gt;&gt; &gt;        unsigned int    is_pcie:1;<br>
&gt; &gt;&gt; &gt; +       unsigned int    fndmntl_rst_rqd:1; /* Dev requires fundamental<br>
&gt; &gt;&gt; &gt; reset<br>
&gt; &gt;&gt; &gt; */<br>
&gt; &gt;&gt; &gt;        unsigned int    state_saved:1;<br>
&gt; &gt;&gt; &gt;        unsigned int    is_physfn:1;<br>
&gt; &gt;&gt; &gt;        unsigned int    is_virtfn:1;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; As Ben points out, the name is awkward.  How about needs_freset ?<br>
&gt; &gt;<br>
&gt; &gt; I am OK with name change.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;&gt; Since this affects the entire pci subsystem, it should be documented<br>
&gt; &gt;&gt; properly.  The &quot;pci error recovery&quot; subsystem was designed to be<br>
&gt; &gt;&gt; usable in other architectures, and so the error recovery docs should<br>
&gt; &gt;&gt; take at least a paragraph to describe what this flag means, and when<br>
&gt; &gt;&gt; its supposed to be used.<br>
&gt; &gt;<br>
&gt; &gt; I will update the documentation, are you referring to<br>
&gt; &gt; Documentation/powerpc/eeh-pci-error-recovery.txt<br>
&gt; &gt; or some other documentation?<br>
&gt; <br>
&gt; No, I'm thinking<br>
&gt; Documentation/PCI/pci-error-recovery.txt<br>
&gt; <br>
&gt; because the flag is not powerpc-specific.<br>
</tt><br>
<tt>Got it, glad I asked...</tt><br>
<br>
<tt>-rich</tt><br>
<tt><br>
&gt; &gt;<br>
&gt; &gt;&gt; Providing the docs patch together with the pci.h patch *only* would<br>
&gt; &gt;&gt; probably simplify acceptance by the PCI community.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; --linas<br>
&gt; &gt;<br>
</tt></body></html>