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
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.
Stefan
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); }
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.
On Wed, 14 May 2008 22:53:42 -0400, Joseph Smith joe@settoplinux.org wrote:
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.
So, can I get an ACK?
Joseph Smith wrote:
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.
Do you remember which devices those were?
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.
So, can I get an ACK?
Acked-by: Stefan Reinauer stepan@coresystems.de
-----Original Message----- From: coreboot-bounces@coreboot.org [mailto:coreboot-bounces@coreboot.org] On Behalf Of Stefan Reinauer Sent: Thursday, May 15, 2008 6:13 AM To: joe@settoplinux.org Cc: coreboot@coreboot.org Subject: Re: [coreboot] v2[PATCH]RCA RM4100 reboot patch
Joseph Smith wrote:
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.
Do you remember which devices those were?
I'm no sure if it is a particular device or just the act of the process. You can check the bootlog I posted here:
http://www.coreboot.org/pipermail/coreboot/2008-May/034814.html
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.
So, can I get an ACK?
Acked-by: Stefan Reinauer stepan@coresystems.de
r3322
-- Thanks, Joseph Smith Set-Top-Linux www.settoplinux.org