[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