On Mon, Nov 23, 2009 at 12:27 AM, Nathan Williams
<[email protected]> wrote:
> Marc Jones wrote:
>> On Tue, Nov 10, 2009 at 1:26 PM, Nathan Williams <[email protected]> 
>> wrote:
>>> Marc Jones wrote:
>>>> On Fri, Nov 6, 2009 at 7:57 AM, Nathan Williams <[email protected]>
>>>> wrote:
>>>>> Another observation I made was that by setting the debug_level to
>>>>> BIOS_CRIT,
>>>>> instead of dying at the usual spot in disable_car() and stopping,
>>>>> coreboot
>>>>> would reset continuously (cycling every 1-2 seconds)
>>> Since I needed to have a BIOS that didn't have much debugging enabled for a
>>> customer sample, I looked a bit deeper to find the cause of this continuous
>>> reset behaviour.  Even changing the debug level from BIOS_SPEW to BIOS_DEBUG
>>> caused the reset.  I tracked it down to a single  printk and my attached
>>> patch means it works at BIOS_CRIT now, just with a few extra debug lines.
>>>  Without the printk, the code gets to "missing phase4_read_resources" (just
>>> a few lines down from my patch) before restarting.
>>
>> This sounds like it is probably blowing the stack or the stack hits
>> memory that isn't working correctly.
>>
>>
>>>>> Another issue that's partly related is the ability for coreboot to set
>>>>>  the
>>>>> GeodeLink speed depending on the detected RAM speed.  As a work-around,
>>>>> we
>>>>> are only using 333MHz SODIMMs and have set the bootstrap bits for
>>>>> GLCP_SYS_RSTPLL[7:1] (section 6.14.2.13 of LX databook) to 500Mhz CPU,
>>>>> 333MHz GLIU instead of bypass mode.  In bypass mode, the GLIU is 266MHz
>>>>> and
>>>>> some of our 333MHz RAM will fail in disable_car(). As a test, I have
>>>>> experimented with
>>>>> pll_reset(MANUALCONF, PLLMSRHI, PLLMSRLO) in initram.c in an attempt to
>>>>> change the GLIU to 333MHz.  I probably didn't have the correct bits set,
>>>>> so
>>>>> even though I managed to set GLIU, it failed the last test (DLL) in
>>>>> sdram_enable() and would reset.
>>>> Your second problem might explain the first. You should look closely
>>>> at the detection problem. It depends on the reset and the state of the
>>>> rstpll flags. There could be a corner case or something unusual going
>>>> on. How did you set the boot strap bits with hardware (straps)? You
>>>> should use pll_reset(ManualConf) settings to change it with hardware.
>>>>
>>>> Marc
>>>>
>>>>
>>> Sorry, I should have explained that we set the boostrap bits in hardware:
>>>
>>> Bit 7: PW1 pad - active high when the PCI clock is 66 MHz, low for 33 MHz.
>>> Bit 6: IRQ13 pad - active high for stall-on-reset debug feature, otherwise
>>> low.
>>> Bit 5: PW0 pad - part of CPU/GLIU frequency selects.
>>> Bit 4: SUSPA# pad - part of CPU/GLIU frequency selects.
>>> Bit 3: GNT2# pad - part of CPU/GLIU frequency selects.
>>> Bit 2: GNT1# pad - part of CPU/GLIU frequency selects.
>>> Bit 1: GNT0# pad - part of CPU/GLIU frequency selects.
>>>
>>> We have pulled these pins up or down to be "0010110", which corresponds to
>>> CPU 500MHz, GLIU 333MHz in table 6-87.  This should also mean that the on
>>> reset, the value of GLCP_SYS_RSTPLL should be 0000049C_0300182Ch (except
>>> that SWFLAGS (GLCP_SYS_RSTPLL[31:26]) is only reset to 0 on Power On Reset
>>> (POR).  So I should be using pll_reset(ManualConf)?  I'll try it later today
>>> and see if I can get some debugging output.
>>
>> If it is set by straps, it should be doing the right thing and you
>> don't need to use the ManualConf. There could still be a corner case
>> and you should try trace through the soft reset that is causing the
>> problem. Also, have you diff'd the MC settings between the BIOS and
>> coreboot. I would be interested in discrepancies.
>>
>> Marc
>>
>>
>
> I managed to get the commercial BIOS to boot on my board and diffed it with 
> coreboot:
>
> http://coreboot.pastebin.com/m39b22c21
>
> The only differences I can see are related to interrupts, which shouldn't 
> matter in relation to
> my RAM problems.
>
> I have also run a memtest86 with the commercial BIOS (from bootable CDROM) 
> and as a payload in coreboot.
> The commercial BIOS didn't have any errors, but my coreboot did.  So the 
> hardware can't be too bad.

That looks like just the southbridge cs5536 target. The memory
differences would be in the processor geodelx target. Can you send
those results?

Marc




-- 
http://marcjonesconsulting.com

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to