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); }