[coreboot] superiotool sometimes skips further SuperIO chips in the system - suggested remedy included
Stefan Reinauer
stepan at coreboot.org
Thu Dec 30 12:41:02 CET 2010
On 12/30/10 12:13 PM, Stefan Reinauer wrote:
> 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.
And an equivalent change is needed for winbond.c I guess.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20101230/5f810070/attachment.html>
More information about the coreboot
mailing list