[LinuxBIOS] patch for making system run past disable_car

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Thu Dec 13 02:28:16 CET 2007


Hi Marc,

that's funny. We both wrote almost the same mail at the same time.

On 13.12.2007 02:14, Marc Jones wrote:
> ron minnich wrote:
>   
>> On Dec 12, 2007 4:50 PM, Carl-Daniel Hailfinger
>> <c-d.hailfinger.devel.2006 at gmx.net> wrote:
>>
>>     
>>> I don't like this. disable_car() should just be able to return without
>>> problems. If it can't do that, fix it.
>>>       
>
> I agree.
>   
>>> Why exactly do we invalidate the stack? If the stack is clobbered, the
>>> contents of variables should be in a clobbered state as well. In that
>>> case, I suspect parts of our v3 code would misbehave as well.
>>>       
>> no, because what happens here is you are essentially dropping all
>> local variables etc. -- this is a jump to a new context, and all the
>> variables in that context are re-initialized.
>>
>> Anyway, maybe Marc can tell us what is wrong. I just don't know. I
>> never solved it on the LX either. I'm happy to see it solved but, at
>> the same time, I don't want to burn my next month of limited cycles on
>> something i have a workaround for.
>>     
>
> I assume you are asking about the wbind. The important part being the 
> wb, writeback. This pushes anything that was in the cache to memory. In 
> LX we maintain the same stack location (same pointers) so we don't need 
> to copy the cache to memory. We can just write it back. This works on 
> the Norwich platform. Any non-working LX systems should be debugged.
>   

Yes, I saw that wbinvd and wondered how it could fail.

> The K8 is a bit different. The CAR is specified to be in the C0000 
> region and the CAR configuration works a little bit differently than the 
> LX and Intel way. The result of those requirements is that at the end of 
> CAR the stack and other contents of CAR have to be copied. Once copied 
> the pointers are adjusted and then the function returns.
>   

You mean, the stack is "moved"? Or why do we need to adjust the
pointers? Won't that leave pointers to variables on stack dangling?

Regards,
Carl-Daniel




More information about the coreboot mailing list