[coreboot] v2[PATCH]RCA RM4100 reboot patch

Joseph Smith joe at settoplinux.org
Thu May 15 04:53:42 CEST 2008




On Wed, 14 May 2008 22:34:29 -0400, Joseph Smith <joe at settoplinux.org>
wrote:
> 
> 
> 
> On Thu, 15 May 2008 03:55:41 +0200, Stefan Reinauer
> <stepan at coresystems.de>
> wrote:
>> Joseph Smith wrote:
>>> This patch allows the RCA RM4100 to reboot. Upon rebooting in auto.c it
>>> detects if the memory is already initialized, if so it issues a hard
>> reset
>>> through the southbridge. It works pretty slick.
>>>
>>> Signed-off-by: Joseph Smith <joe at settoplinux.org>
>>>   
>> Cool!
>> 
>> Have you tried whether it would be sufficient to not initialize memory 
>> again in this case? I am seeing the same issue on another intel chipset,
> 
>> but I wonder whether we really have to be so rough ... especially 
>> thinking about wakeup from sleep states at some point when we have to 
>> think about when we execute which parts of the code anyways..
>> 
>> When I reboot, I usually hang or triple fault at the CPU init while the 
>> device tree is walked.
>> 
>> 
> Well, at first I just tried a cpu reset:
>     asm volatile ("jmp __cpu_reset");
> 
> and that seemed to skip memory initialization, but it hangs on trying to
> re-initialize devices that are already initialized.
> 
> After sudying the ICH4 datasheet it looks like the RST_CNT—Reset
Control
> Register (I/O Address: CF9h) does a couple of things, resets cpu and
> issues
> a PCIRST# to reset the pci devices.
> 
> The only other thing to try is a soft_reset like this, but I din't know
if
> it will work:
> void soft_reset(void)
> {
>         outb(0x04, 0xcf9);
> }
> 
I just tried the soft_reset and it does the same thing as  asm volatile
("jmp __cpu_reset");
Just resets the cpu and not the pci devices, so for now the hard_reset is
the way to go.

-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org





More information about the coreboot mailing list