On Fri, Jun 10, 2016 at 05:17:35AM +0900, SASANO Takayoshi wrote:
> Hello,
> 
> Is there any reports which succeeded to run OpenBSD/armv7
> on Banana Pi BPI-M1?
> I am trying now but it reboots with undefined instruction exception.
> 
> What should I do to solve this problem?

It seems you aren't using the version of u-boot from ports with
the patch to correct the efi loader?

For non-imx platforms u-boot must have the following commit, that is
included with u-boot v2016.07-rc1 or later.

commit 74c16acce30bb882ad5951829d8dafef8eea564c
Author: Alexander Graf <ag...@suse.de>
Date:   Fri May 27 12:25:03 2016 +0200

    efi_loader: Don't allocate from memory holes
    
    When a payload calls our memory allocator with the exact address hint, we
    happily allocate memory from completely unpopulated regions. Payloads 
however
    expect this to only succeed if they would be allocating from free 
conventional
    memory.
    
    This patch makes the logic behind those checks a bit more obvious and 
ensures
    that we always allocate from known good free conventional memory regions if 
we
    want to allocate ram.
    
    Reported-by: Jonathan Gray <j...@jsg.id.au>
    Signed-off-by: Alexander Graf <ag...@suse.de>


Further for sunxi because sunxi has a colon in the stdout-path the
following pending diff is required to find the console.

ie, stdout-path = "serial0:115200n8"

This patch will be in the next snapshot.

Index: armv7_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/armv7/armv7_machdep.c,v
retrieving revision 1.29
diff -u -p -r1.29 armv7_machdep.c
--- armv7_machdep.c     8 Jun 2016 15:27:05 -0000       1.29
+++ armv7_machdep.c     9 Jun 2016 14:45:36 -0000
@@ -904,13 +904,21 @@ void *
 fdt_find_cons(const char *name)
 {
        char *alias = "serial0";
+       char buf[128];
        char *stdout = NULL;
+       char *p;
        void *node;
 
        /* First check if "stdout-path" is set. */
        node = fdt_find_node("/chosen");
        if (node) {
                if (fdt_node_property(node, "stdout-path", &stdout)) {
+                       if (strchr(stdout, ':') != NULL) {
+                               strlcpy(buf, stdout, sizeof(buf));
+                               if ((p = strchr(buf, ':')) != NULL)
+                                       *p = '\0';
+                               stdout = buf;
+                       }
                        if (stdout[0] != '/') {
                                /* It's an alias. */
                                alias = stdout;

Reply via email to