Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/seL4/seL4.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
  1. Jul 01, 2019
    • Kent McLeod's avatar
      gic_500: Use GIC v3 register definitions · 969c8b93
      Kent McLeod authored
      This is in preparation for providing this driver as a generic GIC v3
      driver.
      969c8b93
    • Kent McLeod's avatar
      gic_500: Move redist init code to own function · c33d5e5a
      Kent McLeod authored
      Separate system register initialisation from redistributor register
      initialisation
      c33d5e5a
    • Kent McLeod's avatar
      gic_500: Make redistributor init code smp aware · d03f8c19
      Kent McLeod authored
      - Use array for storing per-core mapping of the redistributor register
      mappings.
      - Locate the base address of each of these mappings based on iterating
      through the full device mappings looking for matchin MPIDR values.
      - When accessing redistributor registers, index into the array based on
      current logical core id.
      - On single core configurations these arrays only have one element.
      d03f8c19
    • Kent McLeod's avatar
      gic_500: Add mpidr_map and mpidr_to_gic_affinity · 11a83dea
      Kent McLeod authored
      mpidr_map is used to store a lookup from seL4 logical core to mpidr
      value for that core.
      mpidr_to_gic_affinity correctly transforms the mpidr value stored in
      mpidr_map to an appropriate GICD_IROUTER register value.
      11a83dea
    • Jesse Millwood's avatar
      Support for ARM GIC 500 · e4926ccc
      Jesse Millwood authored
      Some ARMv8 cores do not have a GIC that has backwards
      compatibility. This adds ARM GIC 500 (GICv3 and GICv4) support to
      seL4. It should also be noted that there are much more distributor and
      redistributor registers than in previous version. The platform
      implementor that needs a GIC500 should take care to set up the kernel
      devices properly.
      
      Change-Id: Ia7c546f7874a758ecd1ee8a29dd749eb3a2444f3
      e4926ccc
    • Yanyan Shen's avatar
      aarch64: Change the kernel device window to 2 MiB. · eab4529f
      Yanyan Shen authored
      This is required for Arm devices that have more registers and require
      larger memory mappings.
      eab4529f
    • Curtis Millar's avatar
      Update CHANGES to reflect RFC-3 Changes. · a06690fb
      Curtis Millar authored
      a06690fb
    • Curtis Millar's avatar
      Add syscall for setting the current TLS register. · 15091664
      Curtis Millar authored
      Some platforms and configurations do not allow user code to change the
      value of the register used for TLS. On these architectures a syscall can
      be used to allow the kernel to update the register on their behalf.
      
      This does not immediately update the value in the user context on many
      configurations as the values are only stored in the user context on a
      context switch.
      15091664
    • Curtis Millar's avatar
      RFC-3: Update user context for ARM with thread IDs · 5646f774
      Curtis Millar authored
      Switched appropriate naming conventions.
      Was using the aarch64, have switched to aarch64 names.
      
      TIPDRURW -> tpidr_el0
      TPIDRURO -> tpidrro_el0
      TPIDRPRW -> tpidr_el1
      
      Switch TLS register on aarch32 from TPIDURO (tpidrro_el0) to tpidr_ro so
      that it can be written to from user-land.
      
      Thread ID registers tpidr_el0 have been added to the user context for
      aarch32 and aarch64.
      
      Only the thread ID that is writeable from EL0 is saved in the TCB and
      saved/restored on context switch.
      
      Thread IDs that are only changed within a VM (the read-only thread ID
      for exception level 0 and the thread ID for exception level 1) are
      stored in the VCPU and saved and stored as part of VM enable/disable.
      
      Thread IDs that are only changed with VMs have been separated out into
      hypervisor code.
      5646f774
    • Curtis Millar's avatar
      Replace IPC_BUF_GLOBALS_FRAME with KERNEL_GLOBALS_FRAME · fd83c0a3
      Curtis Millar authored
      The globals frame no longer serves its original purpose of informing a
      thread of its IPC buffer address, and instead as a virtual
      implementation of thread ID registers.
      fd83c0a3
    • Curtis Millar's avatar
      RFC-3: Update context for x86 to use FS and GS. · 3207abee
      Curtis Millar authored
      TLS_BASE virtual register is replaced with FS_BASE and GS_BASE virtual
      registers.
      
      The FS_BASE and GS_BASE virtual registers are moved to the end of the
      context so they need not be considered in the kernel exit and entry
      implementation.
      
      Removed tracking of ES, DS, FS, and GS segment selectors on kernel entry
      and exit.
      
      ES and DS are clobbered on kernel entry with the RPL 3 selector for a
      DPL 3 linear data segment.
      
      FS is clobbered on exit with the RPL 3 selector for the DPL 3 segment
      with FS_BASE as the base. This is done on exit to reload the value from
      the GDT.
      
      GS is clobbered on exit with the RPL 3 selector for the DPL 3 segment
      with GS_BASE as the base. This is done on exit to reload the value from
      the GDT.
      
      Kernel entry and exit code is refactored, simplified, and improved in
      light of the above changes.
      
      x64: update verified config to use fsgsbase instr
      
      The verification platform for x64 relies on the fsgsbase instruction.
      3207abee
    • Curtis Millar's avatar
      09d5e245
    • Curtis Millar's avatar
      Remove platform IPC buffer register. · b6417f21
      Curtis Millar authored
      This removes the assumption that each platform sotres the IPC buffer
      address in a platform-specific register. The IPC buffer address is
      instead stored in a thread-local variable in libsel4 which must be
      initialised by the runtime.
      b6417f21
  2. Jun 28, 2019
    • Kent McLeod's avatar
      CMake: Invert plat config.cmake processing order · 4ede700f
      Kent McLeod authored
      Instead of processing each platform CMake file during the arch's
      config.cmake file, we process all of the platform CMake files first.
      This is primarily motivated by wanting to move platform configuration
      into a config file that is processed via a -C argument to the initial
      build initialisation command.
      
      Now a platform config is responsible for setting the kernel architecture
      and it's own platform/arch specific config settings. Where previously a
      platform was chosen in an arch specific way via either setting
      KernelARMPlatform or KernelX86Sel4Arch or KernelRiscVPlatform, a
      platform can now be set by KernelPlatform. In cases where a platform may
      further parameterise its configuration it is free to choose its own
      config options to query. Platforms that support multiple seL4
      architectures should use KernelSel4Arch to query this.  Platforms that
      provide sub platforms such as exynos5 and subplatforms exynos5250,
      exynos5410 and exynos5422 can be selected by specifying
      KernelPlatform=exynos5, KernelARMPlatform=exynos5410 for example.
      4ede700f
    • Jimmy Brush's avatar
      manual: Correct CNode slot size in bytes · affebe29
      Jimmy Brush authored
      It is 16 bytes on 32-bit systems and 32 bytes on 64-bit systems
      Unverified
      affebe29
  3. Jun 27, 2019
  4. Jun 26, 2019
  5. Jun 24, 2019
  6. Jun 20, 2019
    • Anna Lyons's avatar
      arm/tk1: make SMMU memory static · ce6d05e9
      Anna Lyons authored
      The tk1 SMMU implementation does not need to dynamically allocate
      memory as the PDs are not managed by user-level. Convert to static.
      ce6d05e9
    • Anna Lyons's avatar
      exynos4: clamp memory to fit in kernel window · c93c1c89
      Anna Lyons authored
      Add a device tree overlay such that all memory on the exynos4 fits in
      the kernel window. It's unknown if the memory past 0x50000000 is valid,
      when the elf-loader attempts to write to it it hangs.
      c93c1c89
    • Matthew Brecknell's avatar
      ARM boot: avoid variable + constant array access · 20ef7255
      Matthew Brecknell authored
      This is workaround for part of binary verification, which currently
      cannot handle some modes of array access.
      20ef7255
    • Anna Lyons's avatar
      boot: handle arm user image > kernel window · d4c106bf
      Anna Lyons authored
      If we place the user image at the end of memory, the user image can be
      beyond the kernel window. Handle this in arch_init_freemem by comparing
      to paddr's not pptrs.
      d4c106bf
    • Anna Lyons's avatar
      boot: allocate rootserver objects last · cb7cbd84
      Anna Lyons authored
      This change allows us to know, from just the kernel and dtb, where user
      level untyped objects start being allocated from.
      
      - allocate rootserver objects from last available freemem region.
      - move create_rootserver_objects call into init_freemem.
      cb7cbd84
    • Anna Lyons's avatar
      arm: handle user image being at end of memory · 6db7bf9b
      Anna Lyons authored
      The user image could be on either side of mode_reserved_region. Fix this
      by assuming there is 1 or 0 mode_reserved_regions, and checking if the
      user image is either side.
      6db7bf9b
    • Japheth Lim's avatar
      ARM boot: abort if out of freemem slots · 4a3685df
      Japheth Lim authored
      This fails early if the build process failed to calculate a suitable
      MAX_NUM_FREEMEM_REG.
      4a3685df
    • Japheth Lim's avatar
      ARM boot: MAX_NUM_FREEMEM_REG++ for new allocator · e42700a4
      Japheth Lim authored
      Previously, the boot allocator would do dynamic calculations to
      minimise fragmentation, then throw away the smallest regions.
      With the new boot allocator, we can reasonably predict that
      fragmentation will create at most one extra region, so this commit
      adds one freemem slot for ARM.
      e42700a4
    • Anna Lyons's avatar
      trivial: VspaceBits -> VSpaceBits on riscv32 · 5f8e3615
      Anna Lyons authored
      5f8e3615
    • Anna Lyons's avatar
      boot: refactor allocation of rootserver objects · 8586b7f2
      Anna Lyons authored
      Prior to this change, the boot process would dynamically allocate
      memory for root server objects based on the order of initialisation.
      Allocation was a best-fit algorithm.
      
      This change preallocates all memory for root server objects to an
      aligned untyped just after the user image. By allocating the objects in
      order of size, allocation is greatly simplified and the ability to
      reproduce the allocation offline based on the kernel and user image
      sizes is increased.
      8586b7f2
    • Anna Lyons's avatar
      x86/ept: return correct MappingFailedLookupLevel · 90c49746
      Anna Lyons authored
      Prior to this change, seL4_MappingFailedLookupLevel() would retrun '22'
      after any failed EPT mapping operation. This change fixes this to return
      the correct amount of unresolved bits in the address.
      90c49746
Loading