andy-shev / linux

Linux kernel source tree
Other
25 stars 11 forks source link

eds branch kernel works in 32-bit mode, but not in 64-bit mode #2

Closed cklin closed 7 years ago

cklin commented 8 years ago

Is the kernel from eds branch supposed to work on Edison in 64-bit mode?

If I build the kernel (current eds branch head, 01e5c69a4f4a13d43e753157a5602b1d8c690469) in i386 architecture, the kernel boots fine on Intel Edison with mini-breakout board. But if I build with x86_64 architecture using the same kernel source, the kernel fails to boot on the same Edison board. This is what I see on the serial console:

reading vmlinuz2
6727072 bytes read in 164 ms (39.1 MiB/s)
Valid Boot Flag
Setup Size = 0x00003e00
Magic signature found
Using boot protocol version 2.0d
Linux kernel version 4.8.0-rc6-barb+ (user@common) #1 SMP Tue Sep 13 21:29:38 PDT 2016
Building boot_params at 0x00090000
Loading bzImage at address 00100000 (6711200 bytes)
Magic signature found
Kernel command line: "rootwait root=PARTUUID=012b3303-34ac-284d-99b4-34e03a2335f4 rootfstype=ext4 console=tty1 console=ttyS2,115200n8 console=ttyMFD2 loglevel=8 g_multi.ethernet_config=cdc systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=28b8e149bda6b46f643f266147d3be59 g_multi.dev_addr=02:00:86:d3:be:59 platform_mrfld_audio.audio_codec=dummy"

Starting kernel ...

And then nothing happens, until the watchdog kicks in and reboots the system.

I built the kernels using the standard "make -j4" command, with gcc (Debian 6.1.1-11) 6.1.1 20160802 on a x86_64 Linux system running Debian testing. The kernel configs are generated from i386_defconfig and x86_64_defconfig, respectively, and everything else (even the kernel boot arguments provided by u-boot) are the same.

The page https://edison.internet-share.com/wiki/Using_a_vanilla_Linux_kernel_with_Intel_Edison states that Linux 4.4 boots on Edison in 64-bit mode, so I was hoping that the latest eds branch would also work in 64-bit mode. But perhaps there has been a regression?

Any help would be appreciated. Please let me know if I can provide more information to help with troubleshooting. Thanks!

config-x86_64.txt

andy-shev commented 8 years ago

You have to update U-Boot to at least 2015.05. I suppose the one from here should work (never tested): https://github.com/01org/edison-u-boot/tree/edison-v2016.03 (you may try starting from older one).

P.S. I tried it only in kexec mode. I'm wondering if just U-Boot update is enough to achieve that.

cklin commented 8 years ago

I see. Thanks for the pointer - though I am a bit reluctant to mess with custom u-boot. I am confident that I can recover from a bad Linux kernel, but a bad custom u-boot image seems like the kind of problem that can brick an Edison board.

andy-shev commented 8 years ago

At some point I would switch Edison I have access to to new U-Boot and will try x86_64 kernel directly, but this is low priority task. I would appreciate if anyone can do this earlier than me.

andy-shev commented 7 years ago

Here is the recipe: https://communities.intel.com/message/435516#435516.

U-Boot 2016.11-00057-g87bfbd3 (Nov 16 2016 - 15:38:02 +0200)
CPU: x86_64, vendor Intel, device 406a8h
DRAM:  980.6 MiB
MMC:   tangier_sdhci: 0, tangier_sdhci: 1
In:    serial@ff010180
Out:   serial@ff010180
Err:   serial@ff010180
Net:   Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot:  0 
reading vmlinuz.efi
6816032 bytes read in 166 ms (39.2 MiB/s)
reading initrd
1712559 bytes read in 52 ms (31.4 MiB/s)
Valid Boot Flag
Setup Size = 0x00003e00
Magic signature found
Using boot protocol version 2.0d
Linux kernel version 4.9.0-rc5+ (andy@black) #31 SMP Fri Nov 18 19:52:07 EET 2016
Building boot_params at 0x00090000
Loading bzImage at address 100000 (6800160 bytes)
Magic signature found
Initial RAM disk at linear address 0x03000000, size 8388608 bytes
Kernel command line: "console=tty1 console=ttyS2,115200n8 rootfstype=ramfs rw quiet"
Starting kernel ...
[    0.000000] ACPI BIOS Error (bug): A valid RSDP was not found (20160831/tbxfroot-244)
[    0.130515] bcm43xx-vmmc-regulator: Failed to request enable GPIO96: -517
[    0.130718] reg-fixed-voltage reg-fixed-voltage.0.auto: Failed to register regulator: -517
[    2.293156] Initramfs unpacking failed: junk in compressed archive
Starting logging: OK
Starting mdev...
Initializing random number generator... done.
Starting network: OK
Starting udhcpc...
console=tty1 console=ttyS2,115200n8 rootfstype=ramfs rw quiet
udhcpc: started, v1.25.1
[    5.602591] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
udhcpc: sending discover
udhcpc: sending select for 192.168.2.71
udhcpc: lease of 192.168.2.71 obtained, lease time 43200
[    6.613778] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
Welcome to Buildroot
buildroot login: root
# uname -a
Linux buildroot 4.9.0-rc5+ #31 SMP Fri Nov 18 19:52:07 EET 2016 x86_64 GNU/Linux