Patchwork [U-Boot] Interrupt issue about bootvx command

login
register
mail settings
Submitter Peter Pan
Date Oct. 12, 2011, 2:34 a.m.
Message ID <CAGQXtZG4F9dVScMU2Eej6TSteVcRWeHETEP8vfATNeWn0V76qQ@mail.gmail.com>
Download mbox | patch
Permalink /patch/119101/
State Changes Requested
Headers show

Comments

Peter Pan - Oct. 12, 2011, 2:34 a.m.
Hi Wolfgang,

vxWorks needs all interrupt to be disabled before it's boot up, while
u-boot sometimes enables them.
Recently, I'm facing this kind of problem about booting up vxWorks
through bootvx command.
So, I added a patch to the common/cmd_elf.c to disable all interrupts
before run into vxWorks image.
This patch is now working fine on my board. So I think maybe it will
be helpful for others.

The following is my patch :

commit 66768801bb10477ca8431b284d1738dcf3a834b8
Author: Ke Pan <pppeterpppan@gmail.com>
Date:   Wed Oct 12 09:50:44 2011 +0800

    common/cmd_elf : Disable interrupts before boot vxWorks

    The vxWorks needs all interrupts to be disabled before its boot.
Wolfgang Denk - Oct. 12, 2011, 7:39 a.m.
Dear Peter Pan,

In message <CAGQXtZG4F9dVScMU2Eej6TSteVcRWeHETEP8vfATNeWn0V76qQ@mail.gmail.com> you wrote:
> 
> vxWorks needs all interrupt to be disabled before it's boot up, while
> u-boot sometimes enables them.

In which configuration / on which board have you run your tests?

> Recently, I'm facing this kind of problem about booting up vxWorks
> through bootvx command.
> So, I added a patch to the common/cmd_elf.c to disable all interrupts
> before run into vxWorks image.
> This patch is now working fine on my board. So I think maybe it will
> be helpful for others.
> 
> The following is my patch :

Checkpatch says: total: 2 errors, 3 warnings, 10 lines checked

Please see http://www.denx.de/wiki/U-Boot/Patches ; then clean up and
resubmit.

Thanks.

Best regards,

Wolfgang Denk

Patch

diff --git a/common/cmd_elf.c b/common/cmd_elf.c
index bf32612..7fc5ef5 100644
--- a/common/cmd_elf.c
+++ b/common/cmd_elf.c
@@ -229,6 +229,9 @@  int do_bootvx (cmd_tbl_t *cmdtp, int flag, int
argc, char * const argv[])
        printf ("## Using bootline (@ 0x%lx): %s\n", bootaddr,
                        (char *) bootaddr);
        printf ("## Starting vxWorks at 0x%08lx ...\n", addr);
+    printf ("## Disableing interrupts ...\n");
+
+    disable_interrupts();

        ((void (*)(void)) addr) ();