[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.


By the way, the new section checker has better output:
  CHECK   initram (non-empty .data sections)
make: ***
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.



More information about the coreboot mailing list