On Wed, 14 May 2008 22:34:29 -0400, Joseph Smith joe@settoplinux.org wrote:
On Thu, 15 May 2008 03:55:41 +0200, Stefan Reinauer stepan@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@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.