[coreboot] v3 CS5536 SMBus bug
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Wed Aug 20 17:16:02 CEST 2008
On 20.08.2008 16:37, Stefan Reinauer wrote:
> Carl-Daniel Hailfinger wrote:
>
>> v3 can't use global variables in stage1 or initram. Same applies to
>> static local variables. See the bug below.
>>
>> Ideas for fixes? The generic variable infrastructure would be one option.
>>
>
> Just call smbus_init() prior to calling smbus_read_byte() the first
> time. The variable infrastructure might be a nice idea for some things,
> but I think in cases as simple as this, we should not rely on it.
>
Agreed.
By the way, the new section checker has better output:
CHECK initram (non-empty .data sections)
/sources/tmptrees/corebootv3-check_illegal_global_vars/build/coreboot.initram_partiallylinked.o:
first_time.3526
make: ***
[/sources/tmptrees/corebootv3-check_illegal_global_vars/build/coreboot.initram]
Error 1
> Is there a method to change variables in your "variable infrastructure"
> across cpus? If so, it could be useful for semaphores / locking. But I
> don't think that's possible since the stuff is in cache, right?
>
It strongly depends on the processor. Some processors share their CAR
area contents, some don't. If CAR is shared, locking and updating is
possible. If CAR is not shared, we need a global register for locking
and a sort of syscall mechanism which allows APs to tell the BSP about
memory writes/reads.
Regards,
Carl-Daniel
--
http://www.hailfinger.org/
More information about the coreboot
mailing list