[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 0/38] arm: boot a dom1 to "Calibrating delay loop" then hang


  • To: xen-devel <xen-devel@xxxxxxxxxxxxx>
  • From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
  • Date: Fri, 1 Jun 2012 16:38:33 +0100
  • Delivery-date: Fri, 01 Jun 2012 15:39:17 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

Sorry for the enormous dump, I seem to have accumulated a boat load of
stuff in my tree...

There's actually a bunch of random guff in here, but the main bit is
xc_dom code in libxc to build a dom1 from a ARM zImage and enough
hypervisor support to run it to:
        [    0.000000] Linux version 3.2.0-rc5-arm-native+ (ianc@drall) (gcc 
version 4.6.0 (GCC) ) #174 Thu May 24 15:44:30 BST 2012
        [    0.000000] CPU: ARMv7 Processor [410fc0f0] revision 0 (ARMv7), 
cr=10c53c7d
        [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing 
instruction cache
        [    0.000000] Machine: ARM Versatile Express, model: V2P-AEMv7A
        [    0.000000] bootconsole [xenboot0] enabled
        [    0.000000] Memory policy: ECC disabled, Data cache writeback
        [    0.000000] Architected local timer running at 100.00MHz.
        [    0.000000] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps 
every 42949ms
        [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  
Total pages: 32512
        [    0.000000] Kernel command line: earlyprintk=xen console=hvc0
        [    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
        [    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 
bytes)
        [    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 
bytes)
        [    0.000000] Memory: 128MB = 128MB total
        [    0.000000] Memory: 126256k/126256k available, 4816k reserved, 0K 
highmem
        [    0.000000] Virtual kernel memory layout:
        [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
        [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
        [    0.000000]     vmalloc : 0xc8800000 - 0xf8000000   ( 760 MB)
        [    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
        [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
        [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
        [    0.000000]       .text : 0xc0008000 - 0xc032cce0   (3220 kB)
        [    0.000000]       .init : 0xc032d000 - 0xc034e000   ( 132 kB)
        [    0.000000]       .data : 0xc034e000 - 0xc036f400   ( 133 kB)
        [    0.000000]        .bss : 0xc036f424 - 0xc038e0ec   ( 124 kB)
        [    0.000000] NR_IRQS:256
        [    0.000000] Console: colour dummy device 80x30
        [    0.191514] Calibrating delay loop... 

(Stefano is looking at virtual timers and interrupt injection as we
speak...)

There is some non-ARM impact, specifically teaching xc_dom_* about the
idea that RAM might not start at 0x000 (on the ARM platform we are
similar too RAM starts at 0x80000000), I think that makes at least the
libxc parts non-4.2 material at this stage.

There are also three (more than usually) hacky patches needed to get to
this point:
        HACK: arm: initial XENMAPSPACE_gmfn_foreign
        HACK: add simple xcbuild
        HACK: arm: disable hypercall continuations.
which I'm not proposing but I'm including because it doesn't work
without them ;-).

The rest I think is fair game for acking and cherry-picking the
acceptable bits for commit.

I still need to cleanup the Linux side of this, that probably won't
happen today and these patches probably don't work without those
changes... FWIW the XENMAPSPACE_gmfn_foreign thing is an even bigger
hack there. Ultimately we should do the same thing as hybrid x86

Ian.

The following changes since commit 5fcec8e92ea02240c2737c4fa982027cef053401:

  libxl: fix typos in libxl_cpuid_parse_config (2012-06-01 12:06:22 +0100)

are available in the git repository at:

  git://xenbits.xen.org/people/ianc/xen-unstable.git devel/arm

for you to fetch changes up to 5177d39f17feb3d5ccdedb976074cb0eee62ee69:

  HACK: arm: disable hypercall continuations. (2012-06-01 15:14:28 +0000)

----------------------------------------------------------------
Ian Campbell (38):
      arm: allocate top level p2m page for all non-idle domains
      arm: handy function to print a walk of the hypervisor page tables
      arm: handy function to print a walk of a domain's p2m.
      arm: correct and expand TLB flush CP15 registers
      arm: restore stack on return from trap.
      arm: enable interrupts while handling traps
      arm: hook up domctl and memory_op
      arm: allocate and setup a guest vcpu.
      arm: print domid as part of debug trap
      arm: remove unnecessarily verbose print from p2m_load_VTTBR
      arm: implement p2m lookup
      arm: remove hard tabs from init_idle_domain
      arm: stub out sync_vcpu_execstate
      arm: do not set max_vcpus = 8 in arch_domain_create.
      arm: implement stub version of flush_tlb_mask.
      arm: Add simple cpu_{sibling,core}_mask
      arm: allow p2m to be created with specific MATTR.
      arm: implement vpl011 (UART) emulator.
      arm: context switch a bunch of guest state.
      arm: dump a page table walk when va_to_par fails.
      arm: dump guest s1 walk on data abort which is not a stage 2 issue.
      arm: implement vcpu_show_execution_state
      arm: use correct attributes for mappings in copy_from_paddr()
      arm: map fixmaps non-executable.
      arm: remove old identity map of boot paddr when we are done with it.
      arm: fix locking in create_p2m_entries
      arm: split pending SPIs (global) out from pending PPIs and SGIs (per CPU)
      arm: map GICV in all domains, not just dom0.
      arm: delay enabling data-cache until paging enabled.
      arm: Upgrade guest barriers to Outer-Shareable. Enable Protected Table 
Walk.
      arm: gic.lock can be taken in interrupt context, so lock appropriately.
      arm: context switch virtual timer registers
      arm: the hyp timer seems to work now,  default to using it.
      HACK: arm: initial XENMAPSPACE_gmfn_foreign
      arm: move PSR flag definitions into interface, for tools use.
      libxc: add ARM support to xc_dom (PV domain building)
      HACK: add simple xcbuild
      HACK: arm: disable hypercall continuations.

 tools/libxc/Makefile                 |    1 +
 tools/libxc/xc_dom.h                 |    5 +-
 tools/libxc/xc_dom_arm.c             |  135 +++++++++++++++++++-
 tools/libxc/xc_dom_armzimageloader.c |  167 ++++++++++++++++++++++++
 tools/libxc/xc_dom_core.c            |   12 ++-
 tools/libxc/xg_private.h             |    4 +
 tools/xcutils/Makefile               |    6 +-
 tools/xcutils/xcbuild.c              |  100 +++++++++++++++
 xen/arch/arm/Makefile                |    1 +
 xen/arch/arm/domain.c                |  232 +++++++++++++++++++++++++++++++---
 xen/arch/arm/domain_build.c          |    7 +-
 xen/arch/arm/dummy.S                 |    8 --
 xen/arch/arm/entry.S                 |   23 +++-
 xen/arch/arm/gic.c                   |   56 ++++++---
 xen/arch/arm/gic.h                   |   11 ++-
 xen/arch/arm/head.S                  |    9 +-
 xen/arch/arm/io.c                    |    1 +
 xen/arch/arm/io.h                    |    1 +
 xen/arch/arm/kernel.c                |    8 +-
 xen/arch/arm/mm.c                    |   94 +++++++++++++--
 xen/arch/arm/p2m.c                   |  123 ++++++++++++++++--
 xen/arch/arm/setup.c                 |   15 ++-
 xen/arch/arm/smp.c                   |    9 ++
 xen/arch/arm/smpboot.c               |    5 +
 xen/arch/arm/time.c                  |    8 +-
 xen/arch/arm/traps.c                 |  145 +++++++++++++++++++---
 xen/arch/arm/vgic.c                  |   17 ++-
 xen/arch/arm/vpl011.c                |  155 +++++++++++++++++++++++
 xen/arch/arm/vpl011.h                |   34 +++++
 xen/arch/x86/mm.c                    |    2 +
 xen/include/asm-arm/cpregs.h         |   43 ++++++-
 xen/include/asm-arm/domain.h         |   56 ++++++++-
 xen/include/asm-arm/p2m.h            |    3 +
 xen/include/asm-arm/page.h           |   17 ++-
 xen/include/asm-arm/processor.h      |   26 +---
 xen/include/asm-arm/setup.h          |    2 +-
 xen/include/asm-arm/system.h         |    2 +-
 xen/include/public/arch-arm.h        |   36 ++++--
 xen/include/public/memory.h          |   12 +-
 xen/include/xen/sched.h              |    4 +
 40 files changed, 1426 insertions(+), 169 deletions(-)
 create mode 100644 tools/libxc/xc_dom_armzimageloader.c
 create mode 100644 tools/xcutils/xcbuild.c
 create mode 100644 xen/arch/arm/vpl011.c
 create mode 100644 xen/arch/arm/vpl011.h



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.