On Thu, Aug 13, 2015 at 09:58:22AM +0200, Leonardo Guardati wrote:
> On Fri, Aug 07, 2015 at 11:03:43AM +0200, Average Joe wrote:
> > I have spent another day trying to get this machine to run OpenBSD
> > but have had no success. Since for some reason the network
> > interface is not working I have resorted to loading the ramdisk image
> > from the USB key:
> >
> > sunxi# fatload usb 0 0x40200000 bsd.rd.SUNXI.umg
> > reading bsd.rd.SUNXI.umg
> > 8026368 bytes read in 434 ms (17.6 MiB/s)
> > sunxi# bootm 0x40200000
> > ## Booting kernel from Legacy Image at 40200000 ...
> > Image Name: boot
> > Image Type: ARM Linux Kernel Image (uncompressed)
> > Data Size: 8026304 Bytes = 7.7 MiB
> > Load Address: 40300000
> > Entry Point: 40300000
> > Verifying Checksum ... OK
> > Loading Kernel Image ... OK
> >
> > Starting kernel ...
> >
> > after which the system hangs indefinitely. u-boot version is
> > mainline 2015.07 and I am trying to load an OpenBSD snapshot.
> >
> > Kind regards,
> > Viktor
> >
>
> I was having the same problem with a pcDuino-3-Nano.
>
> The problem was solved adding a configuration option to the menuconfig
> of u-boot: make menuconfig
>
> "ARM Architecture" -> "Enable workarounds for booting old kernels"
>
> then:
>
> $ make CROSS_COMPILE=arm-linux-gnueabihf-
>
> and then adding again the new u-boot-sunxi-with-spl.bin to the miniroot.
It is interesting that OLD_SUNXI_KERNEL_COMPAT isn't related
to atags/dtb setup but rather pll configuration.
It looks like the sunxi code in the kernel should change it's
handling of pll5/pll6 to be compatible with newer u-boot.
u-boot also changes to board id to set bit 28 if OLD_SUNXI_KERNEL_COMPAT
is not set. In which case none of the devices in the kernel will
attach as they are all keyed off that value. So it seems at a minimum
we should mask the board id with 0x0fffffff. I would be curious
to see what happens when running a recent u-boot and the following:
Index: armv7_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/armv7/armv7_machdep.c,v
retrieving revision 1.24
diff -u -p -r1.24 armv7_machdep.c
--- armv7_machdep.c 19 May 2015 03:30:54 -0000 1.24
+++ armv7_machdep.c 13 Aug 2015 09:36:53 -0000
@@ -397,6 +397,12 @@ initarm(void *arg0, void *arg1, void *ar
bus_space_handle_t *);
board_id = (uint32_t)arg1;
+ /*
+ * u-boot has decided the top four bits are
+ * 'compatibility revision' for sunxi
+ */
+ if (board_id != 0xffffffff)
+ board_id &= 0x0fffffff;
/*
* Heads up ... Setup the CPU / MMU / TLB functions