[coreboot] r1026 - in coreboot-v3: mainboard/kontron/986lcd-m southbridge/intel/i82801gx

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Nov 14 20:03:14 CET 2008


On 14.11.2008 19:54, Jordan Crouse wrote:
> Carl-Daniel Hailfinger wrote:
>> On 14.11.2008 19:06, Stefan Reinauer wrote:
>>> ron minnich wrote:
>>>  
>>>> On Fri, Nov 14, 2008 at 9:53 AM, Stefan Reinauer
>>>> <stepan at coresystems.de> wrote:
>>>>      
>>>>> Carl-Daniel Hailfinger wrote:
>>>>>          
>>>>>> On 14.11.2008 18:14, svn at coreboot.org wrote:
>>>>>>
>>>>>>              
>>>>>>> Author: rminnich
>>>>>>> New Revision: 1026
>>>>>>>
>>>>>>> /home/rminnich/coreboot-v3/build/coreboot.initram_partiallylinked.o:
>>>>>>> section .data.rel.ro.local: dual_channel_slew_group_lookup.3242
>>>>>>> single_channel_slew_group_lookup.3243
>>>>>>>                   
>>>>>> Basic rule: If you want to have arrays of pointers in initram,
>>>>>> you lose.
>>>>>> Pointers are not relocatable by definition. const is not going to
>>>>>> help
>>>>>> you there.
>>>>>>               
>>>>> Hm. This is bad. 'nother regression in v3 that wasn't in v2.
>>>>>           
>>>> it's not acceptable as a rule. We have to fix it one way or another.
>>>> Why gcc is marking it as writeable is a puzzle but points to a bug
>>>> somewhere.
>>>>
>>>>     
>>> We could try and use indices instead of pointers. That's the easiest
>>> rewrite i can think of to get the problem done without wasting the
>>> code.
>>>
>>> This is clearly a gcc weakness. This stuff should not happen when
>>> compiling PIC. That's what PIC is for.
>>>   
>>
>> We're missing one crucial piece which is necessary to get PIC to work:
>> The linker. PIC code must be linked _after_ its location is known. That
>> means a linker would have to pass over the final LAR archive. Right now,
>> we circumvent that requirement by using early linker tricks and by
>> prohibiting the use of arrays of pointers.
>>
>> If we insist on using arrays of pointers, we must either run a linker
>> over the final LAR archive or abandon LAR completely and go for v2
>> linker magic.
>
> Fully agreed.  If we run a linker over the final LAR archive, then we
> will need a way to run the linker every single time the LAR has
> changed (including, mind you, on target, if we are going to go for the
> "replace stages on the fly" thing).  Does not sound appetizing at
> all.  I also don't like abandoning LAR - it is useful for payloads and
> such.

Yes, I'd like to keep LAR and I'd also like to avoid linker runs on the
final LAR.


> But I don't think thats what you meant - I think you meant to say that
> we should "abandon the stages concept".

Abandoning stages won't fix this, unfortunately. The problem is PIC in a
LAR. (Okay, if we merged initram into the boot block, it would work, but
that would kill the ability to have fallback/normal initram).

> And you know what - with all due respect to Ron, I tend to be in favor
> of that option.  Stages continue to be rather painful.  Just one guy's
> opinion.

I found stages rather useful, but that's only my personal opinion.

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the coreboot mailing list