All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] bootm: Disable interrupts before loading OS
@ 2013-06-28  7:46 Simon Glass
  2013-06-28  8:00 ` Stefan Roese
  0 siblings, 1 reply; 3+ messages in thread
From: Simon Glass @ 2013-06-28  7:46 UTC (permalink / raw)
  To: u-boot

This restores the ordering of interrupt disable to what it what before
commit 35fc84fa. It seems that on some archiectures (e.g. PowerPC) the
OS is loaded into an interrupt region, which can cause problems if
interrupts are still running.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 common/cmd_bootm.c | 53 +++++++++++++++++++++++++++--------------------------
 1 file changed, 27 insertions(+), 26 deletions(-)

diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index ba0bcd4..e166027 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -504,36 +504,13 @@ static cmd_tbl_t cmd_bootm_sub[] = {
 };
 
 static int boot_selected_os(int argc, char * const argv[], int state,
-		bootm_headers_t *images, boot_os_fn *boot_fn, ulong *iflag)
+		bootm_headers_t *images, boot_os_fn *boot_fn)
 {
 	if (images->os.type == IH_TYPE_STANDALONE) {
 		/* This may return when 'autostart' is 'no' */
 		bootm_start_standalone(argc, argv);
 		return 0;
 	}
-	/*
-	 * We have reached the point of no return: we are going to
-	 * overwrite all exception vector code, so we cannot easily
-	 * recover from any failures any more...
-	 */
-	*iflag = disable_interrupts();
-#ifdef CONFIG_NETCONSOLE
-	/* Stop the ethernet stack if NetConsole could have left it up */
-	eth_halt();
-#endif
-
-#if defined(CONFIG_CMD_USB)
-	/*
-	 * turn off USB to prevent the host controller from writing to the
-	 * SDRAM while Linux is booting. This could happen (at least for OHCI
-	 * controller), because the HCCA (Host Controller Communication Area)
-	 * lies within the SDRAM and the host controller writes continously to
-	 * this area (as busmaster!). The HccaFrameNumber is for example
-	 * updated every 1 ms within the HCCA structure in SDRAM! For more
-	 * details see the OpenHCI specification.
-	 */
-	usb_stop();
-#endif
 #ifdef CONFIG_SILENT_CONSOLE
 	if (images->os.os == IH_OS_LINUX)
 		fixup_silent_linux();
@@ -595,6 +572,30 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
 		argc = 0;	/* consume the args */
 	}
 
+	/*
+	 * We have reached the point of no return: we are going to
+	 * overwrite all exception vector code, so we cannot easily
+	 * recover from any failures any more...
+	 */
+	iflag = disable_interrupts();
+#ifdef CONFIG_NETCONSOLE
+	/* Stop the ethernet stack if NetConsole could have left it up */
+	eth_halt();
+#endif
+
+#if defined(CONFIG_CMD_USB)
+	/*
+	 * turn off USB to prevent the host controller from writing to the
+	 * SDRAM while Linux is booting. This could happen (at least for OHCI
+	 * controller), because the HCCA (Host Controller Communication Area)
+	 * lies within the SDRAM and the host controller writes continously to
+	 * this area (as busmaster!). The HccaFrameNumber is for example
+	 * updated every 1 ms within the HCCA structure in SDRAM! For more
+	 * details see the OpenHCI specification.
+	 */
+	usb_stop();
+#endif
+
 	/* Load the OS */
 	if (!ret && (states & BOOTM_STATE_LOADOS)) {
 		ulong load_end;
@@ -654,7 +655,7 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
 		char *cmd_list = getenv("fakegocmd");
 
 		ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_FAKE_GO,
-				images, boot_fn, &iflag);
+				images, boot_fn);
 		if (!ret && cmd_list)
 			ret = run_command_list(cmd_list, -1, flag);
 	}
@@ -662,7 +663,7 @@ static int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc,
 	/* Now run the OS! We hope this doesn't return */
 	if (!ret && (states & BOOTM_STATE_OS_GO))
 		ret = boot_selected_os(argc, argv, BOOTM_STATE_OS_GO,
-				images, boot_fn, &iflag);
+				images, boot_fn);
 
 	/* Deal with any fallout */
 	if (ret < 0) {
-- 
1.8.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [U-Boot] [PATCH] bootm: Disable interrupts before loading OS
  2013-06-28  7:46 [U-Boot] [PATCH] bootm: Disable interrupts before loading OS Simon Glass
@ 2013-06-28  8:00 ` Stefan Roese
  2013-06-28 22:07   ` Tom Rini
  0 siblings, 1 reply; 3+ messages in thread
From: Stefan Roese @ 2013-06-28  8:00 UTC (permalink / raw)
  To: u-boot

On 06/28/2013 09:46 AM, Simon Glass wrote:
> This restores the ordering of interrupt disable to what it what before
> commit 35fc84fa. It seems that on some archiectures (e.g. PowerPC) the
> OS is loaded into an interrupt region, which can cause problems if
> interrupts are still running.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Thanks-. That fixes the gunzip() not returning on powerpc for me. So:

Tested-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [U-Boot] [PATCH] bootm: Disable interrupts before loading OS
  2013-06-28  8:00 ` Stefan Roese
@ 2013-06-28 22:07   ` Tom Rini
  0 siblings, 0 replies; 3+ messages in thread
From: Tom Rini @ 2013-06-28 22:07 UTC (permalink / raw)
  To: u-boot

On Fri, Jun 28, 2013 at 10:00:58AM +0200, Stefan Roese wrote:
> On 06/28/2013 09:46 AM, Simon Glass wrote:
> > This restores the ordering of interrupt disable to what it what before
> > commit 35fc84fa. It seems that on some archiectures (e.g. PowerPC) the
> > OS is loaded into an interrupt region, which can cause problems if
> > interrupts are still running.
> > 
> > Signed-off-by: Simon Glass <sjg@chromium.org>
> 
> Thanks-. That fixes the gunzip() not returning on powerpc for me. So:
> 
> Tested-by: Stefan Roese <sr@denx.de>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130628/10500a66/attachment.pgp>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-06-28 22:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-28  7:46 [U-Boot] [PATCH] bootm: Disable interrupts before loading OS Simon Glass
2013-06-28  8:00 ` Stefan Roese
2013-06-28 22:07   ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.