[Xen-devel] Xen on Arm Arndale Exynos5250
I am trying to get xen running on an arndale Exynos5250. I think I am close to success because I can boot the hypervisor and interact with the debug console and I don't see any errors. I can switch the debug console from xen mode to Dom0 mode by pressing CTRL-a three times, however I am not prompted to login to Dom0 and I am not able to type any commands. I am unsure if the expected behavior is to receive a login prompt when I switch to Dom0 mode or if I should be getting output on the HDMI and that is where I would login to Dom0. I have attached the putty log showing how I boot with all of the environment variables I am using and after booting I pressed '*' to print all diagnostics. Here are my steps so far. I have done all of the compiling on the arndale board running the linaro prebuilt image from: https://releases.linaro.org/14.03/ubuntu/arndale/arndale-saucy_server_20140323-616.img.gz I have followed the instructions here: http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions/Arndale I initially got the following error compiling Linux: LD sound/built-in.o MK_FW firmware/edid-1920x1080.fw.gen.S make[1]: *** No rule to make target `firmware/edid-1920x1080.fw', needed by `firmware/edid-1920x1080.fw.gen.o'. Stop. make: *** [firmware] Error 2 so I changed the value set in /linux/linaro/configs/lt-arndale.conf from CONFIG_EXTRA_FIRMWARE="edid-1920x1080.fw" to CONFIG_EXTRA_FIRMWARE="" That is the only thing I did that deviated from the instructions. My initial thought was that I needed to add a getty process on COM3, so that when I switched to Dom0 mode I could login. This page seems to agree with me: http://wiki.xenproject.org/wiki/Xen_Serial_Console I tried to do so by creating a ttyS2.conf file under /etc/init/ that read as follows: start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -8 115200 ttyS2 with that in place I was still not prompted to login but it had an effect because the serial connection would become unresponsive after a few minutes. =~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2015.11.05 08:15:55 =~=~=~=~=~=~=~=~=~=~=~= U-Boot 2013.01.-rc1 (Jul 10 2013 - 15:16:09) for ARNDALE5250 CPU: Exynos5250@1000MHz Board: for ARNDALE5250 I2C: ready DRAM: 2 GiB WARNING: Caches not enabled Checking Boot Mode ... SDMMC MMC: EXYNOS DWMMC: 0, EXYNOS DWMMC: 1, EXYNOS DWMMC: 2 In:serial Out: serial Err: serial Net: No ethernet found. (Re)start USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 5 USB Device(s) found scanning usb for storage devices... 1 Storage Device(s) found scanning usb for ethernet devices... 1 Ethernet Device(s) found Hit any key to stop autoboot: 3 0 ARNDALE5250 # setenv xen_addr_r 0x5000 ARNDALE5250 # setenv kernel_addr_r 0x6000 ARNDALE5250 # setenv dtb_addr_r 0x4200 ARNDALE5250 # setenv xen_bootargs 'sync_console console=dtuart dtuart=/serial@12C2 dom0_mem=512M' ARNDALE5250 # setenv dom0_bootargs 'console=hvc0 ignore_loglevel psci=enable clk_ignore_unused root=/dev/mmcblk1p3' ARNDALE5250 # saveenv Saving Environment to MMC... Writing to MMC(0)... done ARNDALE5250 # fatload mmc 0:2 $kernel_addr_r zImage reading zImage 5550584 bytes read ARNDALE5250 # fatload mmc 0:2 $xen_addr_r xen-uImage reading xen-uImage 787356 bytes read ARNDALE5250 # fatload mmc 0:2 $dtb_addr_r exynos5250-arndale.dtb reading exynos5250-arndale.dtb 42095 bytes read ARNDALE5250 # fdt addr $dtb_addr_r ARNDALE5250 # fdt resize ARNDALE5250 # fdt set /chosen xen,xen-bootargs \"$xen_bootargs\" ARNDALE5250 # fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\" ARNDALE5250 # fdt mknode /chosen modules ARNDALE5250 # fdt set /chosen/modules '#address-cells' <1> ARNDALE5250 # fdt set /chosen/modules '#size-cells' <1> ARNDALE5250 # fdt mknode /chosen/modules module@0 ARNDALE5250 # fdt set /chosen/modules/module@0 compatible xen,zimage xen,multiboot-module ARNDALE5250 # fdt set /chosen/modules/module@0 reg <$kernel_addr_r 0x00a0> ARNDALE5250 # bootm $xen_addr_r - $dtb_addr_r ## Booting kernel from Legacy Image at 5000 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size:787292 Bytes = 768.8 KiB Load Address: 8020 Entry Point: 8020 Verifying Checksum ... OK ## Flattened Device Tree blob at 4200 Booting using the fdt blob at 0x4200 Loading Kernel Image ... OK OK reserving fdt memory region: addr=4200 size=b000 Using Device Tree in place at 4200, end 4200dfff Starting kernel ... Xen 4.7-unstable (XEN) Xen version 4.7-unstable (root@) (gcc (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1) debug=y Tue Nov 3 19:30:47 UTC 2015 (XEN) Latest ChangeSet: Wed Oct 21 16:18:30 2015 +0100 git:e294a0c (XEN) Console output is synchronous. (XEN) Processor: 410fc0f4: "ARM Limited", variant: 0x0, part 0xc0f, rev 0x4 (XEN) 32-bit Execution: (XEN) Processor Features:
Re: [Xen-devel] Xen on Arm Arndale Exynos5250
Thanks for the help Ian, I tried using ttySAC2 in /etc/init/ttySAC2.conf but I still am not prompted to login on the serial output. I also tried creating /etc/init/ttyhvc0.conf. I think that is the correct place to start getty from. There are other similar files in that location and this page: https://help.ubuntu.com/community/SerialConsoleHowto says that karmic and newer start console processes from /etc/init/ files. I have also tried using /etc/inittab but that doesn't seem to help. The linaro prebuilt image (no xen) boots and I am prompted to log in so I tried comparing the boot process. I found that the boot.txt file on the boot partition had the following line: setenv bootargs "console=tty0 console=ttySAC2,115200n8 drm_kms_helper.edid_firmware=edid-1920x1080.fw root=UUID=bf05a5f4-06bf-4c99-8729-e20678372aea rootwait ro" that makes me confident that you are correct about the console name being ttySAC2. I tried editing my environment variables to be more similar to this as such: # setenv xen_bootargs 'console=dtuart dtuart=/serial@12C2 dom0_mem=512M' # setenv dom0_bootargs 'console=hvc0 console=ttySAC2,115200n8 ignore_loglevel psci=enable clk_ignore_unused root=/dev/mmcblk1p3' but that brings me to the same debug console with this instruction: (XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen) I can switch input to Xen and then I can get diagnostic info but that is a far as I get. On 11/06/2015 02:52 AM, Ian Campbell wrote: > On Thu, 2015-11-05 at 12:59 -0600, ed sandberg wrote: >> > >> My initial thought was that I needed to add a getty process on COM3, so >> that when I switched to Dom0 mode I could login. This page seems to >> agree with me: >> >> http://wiki.xenproject.org/wiki/Xen_Serial_Console >> >> I tried to do so by creating a ttyS2.conf file under /etc/init/ that >> read as follows: >> >> start on stopped rc RUNLEVEL=[2345] >> stop on runlevel [!2345] >> >> respawn >> exec /sbin/getty -8 115200 ttyS2 >> >> with that in place I was still not prompted to login but it had an >> effect because the serial connection would become unresponsive after a >> few minutes. > > IIRC Linux's name for the console serial device on Arndale is ttySAC2, > so that is what you would want when booting natively (unless Linaro > have done some pretty extreme patching, which I wouldn't expect. I've > only used mainline on this platform). > > If you are running as dom0 under Xen you want to have a getty on > "/dev/hvc0", the Xen PV console device, since the real UART will be > owned by Xen (due to the "dtuart=/serial@12C2" which you will be > passing on Xen's command line). > > I don't think any of the Arndale devices have multiple serial ports > exposed, but if they did then you could use separate ones for Xen's and > dom0's console, but the Linux name for dom0 would still be ttySAC > not ttyS. > > When you created /etc/init/ttyS2.conf were there other similar files > around in that directory? I ask because that sounds like an upstart > path and I'm unsure if Saucy still uses upstart. > > Ian. > > ___ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel > ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
Re: [Xen-devel] Xen on Arm Arndale Exynos5250
> Does your kernel have the Xen drivers (CONFIG_XEN and all which is > gated on that) enabled. In particular CONFIG_HVC_XEN. > Yes the config file I used to compile has CONFIG_XEN=y and CONFIG_HVC_XEN=y. Config file is attached. # # Automatically generated file; DO NOT EDIT. # Linux/arm 4.3.0-rc6 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y CONFIG_MIGHT_HAVE_PCI=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_HAVE_PROC_CPU=y CONFIG_NO_IOPORT_MAP=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_ARCH_HAS_BANDGAP=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_VECTORS_BASE=0x CONFIG_ARM_PATCH_PHYS_VIRT=y CONFIG_GENERIC_BUG=y CONFIG_PGTABLE_LEVELS=3 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y # # General setup # CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" # CONFIG_COMPILE_TEST is not set CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_LZMA=y CONFIG_HAVE_KERNEL_XZ=y CONFIG_HAVE_KERNEL_LZO=y CONFIG_HAVE_KERNEL_LZ4=y CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_XZ is not set # CONFIG_KERNEL_LZO is not set # CONFIG_KERNEL_LZ4 is not set CONFIG_DEFAULT_HOSTNAME="(none)" CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_FHANDLE=y CONFIG_USELIB=y CONFIG_AUDIT=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_WATCH=y CONFIG_AUDIT_TREE=y # # IRQ subsystem # CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_GENERIC_IRQ_CHIP=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_HANDLE_DOMAIN_IRQ=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_ARCH_HAS_TICK_BROADCAST=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y # # Timers subsystem # CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set CONFIG_NO_HZ_IDLE=y # CONFIG_NO_HZ_FULL is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y # # CPU/Task time and stats accounting # CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set # CONFIG_IRQ_TIME_ACCOUNTING is not set CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set # # RCU Subsystem # CONFIG_TREE_RCU=y # CONFIG_RCU_EXPERT is not set CONFIG_SRCU=y # CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y # CONFIG_TREE_RCU_TRACE is not set # CONFIG_RCU_EXPEDITE_BOOT is not set CONFIG_BUILD_BIN2C=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=16 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set # CONFIG_CGROUP_FREEZER is not set # CONFIG_CGROUP_PIDS is not set # CONFIG_CGROUP_DEVICE is not set # CONFIG_CPUSETS is not set # CONFIG_CGROUP_CPUACCT is not set # CONFIG_MEMCG is not set # CONFIG_CGROUP_PERF is not set # CONFIG_CGROUP_SCHED is not set # CONFIG_BLK_CGROUP is not set # CONFIG_CHECKPOINT_RESTORE is not set CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y # CONFIG_USER_NS is not set CONFIG_PID_NS=y CONFIG_NET_NS=y # CONFIG_SCHED_AUTOGROUP is not set # CONFIG_SYSFS_DEPRECATED is not set # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" CONFIG_RD_GZIP=y CONFIG_RD_BZIP2=y CONFIG_RD_LZMA=y CONFIG_RD_XZ=y CONFIG_RD_LZO=y CONFIG_RD_LZ4=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_HAVE_UID16=y CONFIG_BPF=y CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y # CONFIG_SGETMASK_SYSCALL is not set CONFIG_SYSFS_SYSCALL=y # CONFIG_SYSCTL_SYSCALL is not set CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y # CONFIG_BPF_SYSCALL is not set CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_ADVISE_SYSCALLS=y # CONFIG_USERFAULTFD is not set CONFIG_MEMBARRIER=y CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_USE_VMALLOC=y # # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y # CONFIG_COMPAT_BRK is not set CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set # CONFIG_SYSTEM_DATA_VERIFICATION is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_OPROFILE=y CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set # CONFIG_UPROBES is not set # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HA
Re: [Xen-devel] Xen on Arm Arndale Exynos5250
> So does it still not work if you add a getty onto "hvc0" instead of > "ttySA2"? Correct, adding getty to hvc0 also does not work. Ed ___ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel