Branch: refs/heads/next
  Home:   https://github.com/siemens/jailhouse
  Commit: a580b652d9d70b885e2822417fce8458bcb847c5
      
https://github.com/siemens/jailhouse/commit/a580b652d9d70b885e2822417fce8458bcb847c5
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M driver/main.c
    M hypervisor/arch/arm/include/asm/jailhouse_hypercall.h
    M hypervisor/arch/x86/include/asm/jailhouse_hypercall.h
    M hypervisor/setup.c

  Log Message:
  -----------
  driver: ioremap the hypervisor firmware to any kernel address

At the moment the Linux driver maps the Jailhouse binary to
JAILHOUSE_BASE. The underlying assumption is that Linux may map the
firmware (in the Linux kernel space), to the same virtual address it
has been built to run from.

This assumption is unworkable on ARMv8 processors running in AArch64
mode. Kernel memory is allocated in a high address region, that is
not addressable from EL2, where the hypervisor will run from.

This patch removes the assumption, by introducing the
JAILHOUSE_BORROW_ROOT_PT define, which signals the behavior of the
current architectures.

We also turn the entry point in the header, into an offset from the
Jailhouse load address, so we can enter the image regardless of
where it  will be mapped.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: a829b136c65180484b2645b64abd893b0622a2c1
      
https://github.com/siemens/jailhouse/commit/a829b136c65180484b2645b64abd893b0622a2c1
  Author: Dmitry Voytik <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M driver/cell.c
    M driver/main.c

  Log Message:
  -----------
  driver: sync I-cache, D-cache and memory

Syncronize I-cache with D-cache after loading the hypervisor
image or a cell image. This must be done in arm64 according to
ARMv8 ARM spec. See page 1712, D3.4.6 "Non-cacheable accesses
and instruction caches".

This patch fixes coherency problems observed on real HW targets.
On x86 this operation is a NOP.

Signed-off-by: Dmitry Voytik <[email protected]>
Signed-off-by: Antonios Motakis <[email protected]>
[[email protected]: edited comments]

Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 63bc88f473973f12031c22be60e317353c77a428
      
https://github.com/siemens/jailhouse/commit/63bc88f473973f12031c22be60e317353c77a428
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/lib.c
    M hypervisor/arch/x86/apic.c
    M hypervisor/arch/x86/control.c
    M hypervisor/include/jailhouse/printk.h
    M hypervisor/include/jailhouse/processor.h
    M hypervisor/printk.c

  Log Message:
  -----------
  core: make phys_processor_id() return unsigned long

32 bits ought not be enough for anybody.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 3c1f49acbf6b75f0fb3501837c7e1ef107479f97
      
https://github.com/siemens/jailhouse/commit/3c1f49acbf6b75f0fb3501837c7e1ef107479f97
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/control.c

  Log Message:
  -----------
  core: panic_stop: print current cell only if it has been set

Currently during a panic, panic_stop will print the current cell
on the CPU where the panic occurred. However, if the hypervisor
panics sufficiently early during initialization, we may end up in
a situation where the root cell has not been initialized. This can
easily cause a trap loop, making the panic output less useful.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 69842056d00ac67f6b3a09ba116b94a6c3a2fd9d
      
https://github.com/siemens/jailhouse/commit/69842056d00ac67f6b3a09ba116b94a6c3a2fd9d
  Author: Jan Kiszka <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/paging.h
    M hypervisor/arch/x86/include/asm/paging.h
    M hypervisor/include/jailhouse/paging.h
    M hypervisor/paging.c

  Log Message:
  -----------
  core: Add support for aligned page allocation

Refactor page_alloc to page_alloc_internal which accepts an additional
constraint for its allocation: align_mask. The allocated region will now
have its start page chosen so that page_number & align_mask is zero. If
no alignment is required, align_mask just needs to be set to 0. This is
what page_alloc exploits.

However, the new function page_alloc_aligned is introduces to return
page regions aligned according to their size (num pages will be aligned
by num * PAGE_SIZE). This implied that num needs to be a power of two.

This will be used on the AArch64 port of Jailhouse to support physical
address ranges from 40 to 44 bits: in these configurations, the initial
page table level may take up multiple consecutive pages.

Based on patch by Antonios Motakis.

Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 260fe69f158f44a0819a2708906759195f2f922d
      
https://github.com/siemens/jailhouse/commit/260fe69f158f44a0819a2708906759195f2f922d
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/irqchip.c

  Log Message:
  -----------
  arm: pass SPIs with large ids to the root cell

The current design for cell configuration files, defines the SPIs
to be passed to a cell as 64 bit bitmap. In order to use Jailhouse
on targets that have SPI ids larger than 64, we need to work
around this limitation.

Pass large SPIs to the root cell for now. A permanent solution to
this problem will need to tackle the cell configuration format.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 4276ae72471762dfe5948b5c8dfb782036d734dd
      
https://github.com/siemens/jailhouse/commit/4276ae72471762dfe5948b5c8dfb782036d734dd
  Author: Claudio Fontana <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/lib.c
    M hypervisor/lib.c

  Log Message:
  -----------
  core: lib: replace ARM memcpy implementation with generic version

Remove the memcpy implementation from the ARM port, and add a
generic version to the core library for all architectures.

Signed-off-by: Claudio Fontana <[email protected]>
Signed-off-by: Antonios Motakis <[email protected]>
[[email protected]: removed all signs of weakness!]

Signed-off-by: Jan Kiszka <[email protected]>


  Commit: c144ef6a8a9cabb38986878dd9ebf72a0be818d1
      
https://github.com/siemens/jailhouse/commit/c144ef6a8a9cabb38986878dd9ebf72a0be818d1
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/control.h
    M hypervisor/arch/arm/include/asm/percpu.h
    M hypervisor/arch/arm/lib.c
    M hypervisor/arch/arm/psci.c
    M hypervisor/arch/arm/setup.c

  Log Message:
  -----------
  arm: psci: support multiple affinity levels in MPIDR

PSCI actually takes CPU parameters by the MPIDR id, which may
differ from the logical id of the CPU. This patch is the first step
into properly handling the CPU affinity levels in the MPIDR.

Signed-off-by: Antonios Motakis <[email protected]>
[Jan: add missing processor.h include to setup.c]
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 2485703d42de06690c7937b0ff3de3023f747da2
      
https://github.com/siemens/jailhouse/commit/2485703d42de06690c7937b0ff3de3023f747da2
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/psci.h
    M hypervisor/arch/arm/traps.c

  Log Message:
  -----------
  arm: replace IS_PSCI_FN macro with more explicit versions

The previous version of the macro allows for more false positives
than necessary.

Replace the macro with IS_PSCI_32 and IS_PSCI_UBOOT macros, that
explicitly check for the 32 bit PSCI IDs, and the PSCI 0.1 IDs
used by uboot. ARMv8 will need an additinal check for the IDs
of 64 bit PSCI functions.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 6996c52cb359ad204b403918bb54fe22e7accc74
      
https://github.com/siemens/jailhouse/commit/6996c52cb359ad204b403918bb54fe22e7accc74
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/gic-common.c
    M hypervisor/arch/arm/gic-v2.c
    M hypervisor/arch/arm/gic-v3.c
    M hypervisor/arch/arm/include/asm/gic_common.h

  Log Message:
  -----------
  arm: move the handle_irq_route function to the GICv3 module

The handle_irq_route function is not needed with the GICv2.

On the ARMv8 port we will not assign a virt_id to each CPU,
opting to use the MPIDR as much as we can from the start.
GICv3 will need heavier refactoring for this purpose; by moving
this function we can reuse the GICv2 code on ARMv8.

Signed-off-by: Antonios Motakis <[email protected]>
[Jan: implement stub in v2 to reduce #ifdefs]
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 27c3556a711ed9f463cdd69bd406b16ac7b793c8
      
https://github.com/siemens/jailhouse/commit/27c3556a711ed9f463cdd69bd406b16ac7b793c8
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/paging.h
    M hypervisor/arch/arm/include/asm/paging_modes.h
    M hypervisor/arch/arm/mmu_cell.c
    M hypervisor/arch/arm/paging.c

  Log Message:
  -----------
  arm: prepare port for 48 bit PARange support

We currently support 3 levels of page tables for a 39 bits PA range
on ARM. This patch implements support for 4 level page tables,
and 3 level page tables with a concatenated level 1 root page
table.

On AArch32 we stick with the current restriction of building for
a 39 bit physical address space; however this change will allow
us to support a 40 to 48 bit PARange on AArch64.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: 3449fc62f82a478450d05fd954e2025eb55a50e6
      
https://github.com/siemens/jailhouse/commit/3449fc62f82a478450d05fd954e2025eb55a50e6
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/paging.h
    M hypervisor/arch/arm/mmu_cell.c

  Log Message:
  -----------
  arm: put the value of VTCR for cells in a define

We can reuse the code under hypervisor/arch/arm/mmu_cell.c for the
AArch64 port, save for the value we use for the VTCRL. AArch64 will
need in addition to the flags set by the AArch32 port, to set the
size of the address space.

We put this behind a define in asm/paging.h to allow this reuse.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


  Commit: eca3bab8f8e31f8fd3273b773c48e1374a76c07a
      
https://github.com/siemens/jailhouse/commit/eca3bab8f8e31f8fd3273b773c48e1374a76c07a
  Author: Antonios Motakis <[email protected]>
  Date:   2016-06-23 (Thu, 23 Jun 2016)

  Changed paths:
    M hypervisor/arch/arm/include/asm/processor.h
    M hypervisor/arch/arm/mmu_cell.c

  Log Message:
  -----------
  arm: hide TLB flush behind a macro

Hide TLB flushes issues by the MMU code behind a macro, so we can
increase our chances of reusing some of this code.

Signed-off-by: Antonios Motakis <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>


Compare: 
https://github.com/siemens/jailhouse/compare/7d68082e71d8...eca3bab8f8e3

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to