Hello! Unfortunately i don't have much time to investigate this and it is out of my project's scope, but from time to time i test vexpress model on ARM32. And after the recent changes regarding TrustZone support vexpress model with direct kernel boot in KVM gets stuck at this point:
--- cut --- Uncompressing Linux... done, booting the kernel. Booting Linux on physical CPU 0x0 Initializing cgroup subsys cpuset Linux version 4.1.4+ (p.fedin@fedinw7x64) (gcc version 4.8.3 (Linaro GCC 4.8-2014.04-1~dev) ) #5 SMP Wed Aug 5 18:47:36 MSK 2015 CPU: ARMv7 Processor [412fc0f3] revision 3 (ARMv7), cr=30c5387d CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache Machine model: V2P-CA15 bootconsole [earlycon0] enabled Forcing write-allocate cache policy for SMP Memory policy: Data cache writealloc PERCPU: Embedded 12 pages/cpu @8fdd5000 s16704 r8192 d24256 u49152 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024 Kernel command line: console=ttyAMA0,115200n8 root=/dev/vda rw rootwait earlyprintk PID hash table entries: 1024 (order: 0, 4096 bytes) Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Memory: 252256K/262144K available (5374K kernel code, 158K rwdata, 1448K rodata, 272K init, 153K bss, 9888K reserved, 0K cma-reserved) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0x90800000 - 0xff000000 (1768 MB) lowmem : 0x80000000 - 0x90000000 ( 256 MB) modules : 0x7f000000 - 0x80000000 ( 16 MB) .text : 0x80008000 - 0x806b1d28 (6824 kB) .init : 0x806b2000 - 0x806f6000 ( 272 kB) .data : 0x806f6000 - 0x8071dae0 ( 159 kB) .bss : 0x8071dae0 - 0x80743f78 ( 154 kB) SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 Hierarchical RCU implementation. RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS:16 nr_irqs:16 16 L2C: failed to init: -19 NO_HZ: Clearing 0 from nohz_full range for timekeeping NO_HZ: Full dynticks CPUs: 1. Note: kernel parameter 'rcu_nocbs=' contains nonexistent CPUs. Offload RCU callbacks from CPUs: 1. Architected cp15 timer(s) running at 24.00MHz (virt). clocksource arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns Switching to timer-based delay loop, resolution 41ns sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns clocksource arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns Console: colour dummy device 80x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok /cpus/cpu@0 missing clock-frequency property /cpus/cpu@1 missing clock-frequency property CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x80008300 - 0x80008358 --- cut --- The problem goes away if i add "secure=off" option. "virt" machine is not affected. By the way, is it legitimate to default to "secure=on" in KVM mode at all? We cannot have trustzone inside KVM. Kind regards, Pavel Fedin Expert Engineer Samsung Electronics Research center Russia