[coreboot] superiotool sometimes skips further SuperIO chips in the system - suggested remedy included

Stefan Reinauer stepan at coreboot.org
Thu Dec 30 12:13:26 CET 2010


On 12/28/10 11:51 PM, David Hendricks wrote:
> On Tue, Dec 28, 2010 at 4:13 AM, Frantisek Rysanek
> <Frantisek.Rysanek at post.cz <mailto:Frantisek.Rysanek at post.cz>> wrote:
>
>     Dear maintainers of the superiotool,
>
>     I have the following "feature request" (maybe not a bug report):
>     I have this idea that superiotool should be able to detect more than
>     one SuperIO chip in the system. Such detection of multiple chips may
>     work in some cases, but may fail in others.
>
>     The primary cause seems to be that
>      winbond.c :: probe_idregs_winbond()
>     and
>       ite.c :: probe_idregs_ite()
>     call
>       if (chip_found) return;   // this is a global variable!
>     after every "init sequence" tried.
>
>     Therefore, after the first chip detected (of any kind),
>     only the first init sequence is ever tried, in any subsequent calls
>     to the aforementioned probe_* functions.
>

That function is called with a port address. There can only be one chip
at one port address. So leaving the function after a chip has been found
at that address seems like the right thing to do. The bug is that
chip_found is a global variable and not a local variable.

Attached patch should fix the issue.



Stefan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20101230/e6a6a972/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: superiotool-ite.diff
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20101230/e6a6a972/attachment.ksh>


More information about the coreboot mailing list