[Barrelfish-users] New Barrelfish Release

Simon Gerber simon.gerber at inf.ethz.ch
Fri Dec 23 12:22:09 CET 2016

Dear all,

We are pleased to announce a new release of the Barrelfish OS. Along with
various bug fixes, this release includes a new in-kernel system time
interface, a new device queue interface, and improved support for ARMv8.

As always, you can get the latest version by cloning or pulling from our
git repository [1].

-- Simon

[1] git://git.barrelfish.org/git/barrelfish

Adam Turowski (8):
      systime: introducing system time based on time stamp counter/global timer, removing kernel_now
      systime: adding support for A15 (broken for the moment)
      systime: complete remove of kernel_now from x86_64
      systime: correcting includes
      systime: fixing timers on A15
      systime: reverting to a RTC-based calibration on x86
      idctest: increasing a waiting time
      linenoise,fish: failsafe if a terminal width detection goes wrong that could lead to a crash

David Cock (1):
      Comments in the scheduler interface, from code walkthrough.

Kosyrev Serge (19):
      hake.sh:  use /bin/sh
      git:  ignore more editor temporary files
      hake:  GHC.Paths.libdir can be unreliable: use 'ghc --print-libdir' instead
      hake:  now buildable with ghc8
      build:  Nix environment
      newlib | barrelfish:  provide __stack_chk_fail (fixes build)
      kernel:  provide __stack_chk_fail (fixes build)
      elver:  provide __stack_chk_fail (fixes build)
      gmp:  avoid using absolute paths except /bin/sh
      qemu-wrapper.sh:  switch to /bin/sh
      hake:  do not call 'echo' by absolute path
      debug.sh:  switch to /bin/sh
      qemu-wrapper:  /bin/sh fixes
      qemu-wrapper:  use a portable signal specification for trap
      hake.sh:  /bin/sh portability fixes
      nix:  add cpio, qemu and gdb, to finalize the environment-independence
      build | curl:  do not verify certificates for the GMP download
      hake:  /bin/sh portability fixes
      nix | testing:  add pythonPackages.pyexpect

Moritz Hoffmann (168):
      aarch64/apm88xxxx: Correct GIC CPU and DIST addresses
      aarch64: Make generic timer initialization platform independent
      aarch64: remove incorrect assertions for invocations
      aarch64: return initial platform info for VM-based platforms
      qemu: use gdb-multiarch for x86_64 and aarch64 debugging
      tools: Set architecture in gdb files.
      qemu/aarch64: Only create EFI files if required
      qemu: Print command to be executed in all cases
      qemu: remove x86_32 support
      barrelfish_kpi/platform: Add APM88xxxx, remove TMAS
      kernel/armv8: Remove platform directories as they are not needed anymore
      kernel/armv8: Cleanup debug output
      kernel/armv8/apm88xxxx: Implement platform_get_info
      kernel/armv7: Remove obsolete omap_usb.c file
      kernel: Use common app_alloc_phys and bsp_alloc_phys on all archs
      barrelfish/core_state: Remove unused track_frames code.
      barrelfish_kpi: Use different include guards
      kernel: Unify kernel logging infrastructure
      kernel/arm: Move armv7-specific dispatch.c to correct location
      kernel: Factor common constants for init on armv7 and armv8
      kernel/armv8: Ensure physical memory is page-aligned
      kernel/armv8: rename arm_core_data struct to armv8_core_data
      kernel/armv8: Rename armv8-specific INIT_* defines to ARMV8_INIT_*
      kernel/armv8: Correct spawn_{app/bsp}_init function signatures
      kernel: Include logging.c in boot drivers
      kernel/armv8: Remove redundant defines from startup_arch.h
      X86_64: Force static linking for binaries
      ARMv8: Do not include build-id in kernel binary
      kernel/multiboot2: Correctly use size parameter for finding next header
      kernel/multiboot2: Remove glbl_core_data variable
      barrelfish_kpi/armv8: Remove unused struct definitions
      elver: Force static linking
      harness: prepare for armv8
      harness: Use hagfish.cfg as boot config name on armv8
      harness: Correct indentation. Space-only change
      harness: Introduce Scalebench and Harness classes
      harness/scalebench: Print tests in sorted order (-L)
      harness/monitortest: Correct indentation. Space-only change
      harness: Use proper machine factory classes to create machine obejcts
      kernel/logging: Change default log level to LOG_NOTE
      harness: Turn into proper Python module
      harness: Add EFI image tool to create EFI disk images
      scalebench: Only write xml report once
      scalebench: Fix listing machines and diagnostic output
      scalebench: Improve error reporting when exceptions are thrown in a test
      harness/FVP: Do not redirect error output to /dev/null
      harness/FVP: Add ARMv8 FVP machine booting from EFI
      harness: Remove kludges from menu.lst generation
      harness: Remove unused code
      harness/builds: Do not clobber os.environ but rather work on copy
      kernel/logging: Convert defined constants to enum
      kernel/pl011: Map kernel virtual address of device if MMU is enabled
      kernel/armv8/sysreg: Add wrappers for more registers
      harness: fix add_kernel_arg by changing it to only taking iterables
      harness: Move default_bootmodules to Machine class
      harness: Refactor ETH machines to use object variables instead of shared machine dict
      harness: Remove support for $BUILD in test module names
      harness: Split machine operations into MachineOperations class
      harness: Make Machine class configurable in constructor
      harness: Fix qemu tests
      harness: Update gem5 tests
      harness: Gracefully fail test if get_output returns None
      harness: Add machine parameter validation before machines are created
      harness: Change machine create parameters from dict to kwargs
      harness: Better error message for unknown machine parameters
      harness: Use self._name instead of self.name
      harness: Fix force_write to forward to machine operations.
      harness: Remove shadowing methods from ETHMachineBase
      Revert "kernel/pl011: Map kernel virtual address of device if MMU is enabled"
      schedsim: Compatibility to systime changes
      barrelfish_kpi/aarch64: Fix compilation by using correct include
      solarflare: Correct device/if includes
      armv8/kpi: Correct include
      libbarrelfish/systime: Include more specific header
      barrelfish_kpi: Add FVP platform
      kernel/armv8: kernel_timeslice is not unsigned long, fix argument parsing
      kernel/armv8: More timer implementation. Also align with systime-changes
      kernel/armv8: syscall.c depends on systime.h
      kernel/systime: Include more specific header
      crt: Change static ctors array to volatile to disable GCC 6 optimiazations
      kaluga: Properly support ARMv8 platforms
      barrelfish/systime.h: Need to include kpi/unknown_arch for rdtsc on arm
      hake: Generate $arch_All target that compiles all binaries for an arch
      barrelfish_kpi: Add unknown_arch.h to x86_64 although it is empty
      barrelfish_kpi: correct includes for rdtsc on x86_64
      systime: Correct includes
      harness: Update netos FVP path
      harness/fvp: Do not override get_output
      harness/fvp: Initialize FVPMachineEFI correctly
      harness/fvp: Use correct kernel_img property for EFI machines
      harness/fvp: Use UEFI firmware on netos share
      harness/fvp: Output to stdout (unbuffered)
      harness/fvp: Disable configuring telnet port as it's not used
      harness/fvp: Do not open a window for second uart
      harness/fvp: Add more EFI machine targets
      harness/fvp: Document where EFI firmware can be obtained
      harness/fvp: Fix get_output for EFI machines because it doesn't use telnet
      kernel/armv8: Fix console initialization
      kernel/armv8: Read CNTPCT_EL0 for timestamp_read/systime_now
      harness: Better error message if instantiating a machine fails
      harness/pandaboard: Fix Machine implementation by passing parameters to super class
      Fix T325: ETH rack Pandaboards should not use picocom
      irqtest: Fix pass condition to what description says
      libbarrelfish: Increase dispatcher stack to 8k
      libbarrelfish: align dispatcher stacks to 16 byte
      kernel/armv8: Fix timer initialization to properly initialize kernel state
      kernel/x1om: Fix compile errors
      harness/xeonphi: Fix test by using correct module directory
      hake: GHC 8 compatibility
      harness/fvp: Update DStream path to 5.26.0
      mackerel: Add registerwise address space.
      Initial ARMv8 device file with backing sysreg implementation
      armv8: Default to static linking
      armv8: Add ICC cpu register definitions
      kernel/armv8: Add GIC v3 placeholder implementation
      mackerel: Do not pass device pointer to registerwise address space functions
      armv8: Add more register definitions
      kernel/armv8: Use armv8 register definitions in efiboot_init.c
      kernel/armv8: Read value from first instead of second parameter in sysreg.S
      kernel/armv8: Return FVP platform for ARMv8 VM cpu drivers
      kaluaga: cpu_count parameter to wait for n instead of all spawnd processes
      harness: Add kaluga to default boot modules on ARMv8
      kaluga: Do not try to obtain IRQ cap on ARMv8 because it is not implemented
      hake: add menu.lst for armv8_a57_1
      harness/fvp: Correct EFI image path, was duplicate
      harness/fvp: Use correct module source path for building EFI image
      harness/fvp: Increase boot timeout to 60s for EFI-based tests
      harness: Replace reset_module with add_module
      hake: $ARCH_All target needs to depend on targets in BuildTree
      kernel/armv8: Print unrelocated kernel addresses for kernel faults
      kernel/armv8: Move GIC initialization to platform-specific code
      kernel/armv8: Remove debug leftovers from timers
      kernel: Do not trigger breakpoint on kernel panic
      devices/gic_v3: Initial device decscription
      devices/giv_v3: Bug fixes
      kernel: cpu_a57v depends on gic_v3
      kernel/armv8: Add RAM::frameIdentify invocation implementation
      hake: Add BFSrcTree tree type
      hake: Scan . directory for Hake files
      Revert "hake: Generate $arch_All target that compiles all binaries for an arch"
      hake: Avoid prepending path with ./
      hake: Generate Phony targets only for allowed architectures
      hake: includeFile exports install_headers target
      symbolic_targets: remove install_headers rule
      hake: symbolic_targets is in hake/ instead of root install dir
      hake: Make bin/lib directories configurable.
      hake/symbolic_targets.mk: Move MAKEFLAGS and ruls for .c to Main.hs
      install_headers: Update Hakefile for /include
      install_headers: Create Hakefile for newlib libc/include
      hake: Install required Hake source files to install tree
      hake: Introduce dist_dir, a directory where the install_$PLAT targets install to
      hake: Prevent certain path to be reduced to an empty string
      hake: Generate install_$PLAT targets
      hake: GHC output dir evaluated to /, corrected
      hake: Generate clean targets from Hake
      hake: Do not include symbolic_targets.mk
      hake: Generate help, help-platforms-header and help-boot-header targets
      hake: Remove rule for target hake/menu.lst
      hake: Let help-* targets depend on their header rule
      hake: Provide legacy target `install' for scalebench
      hake/armv7: Force static linking of binaries
      Revert "hake: Introduce dist_dir, a directory where the install_$PLAT targets install to"
      hake: Use INSTALL_PREFIX variable for install targets
      schedsim: Re-create targets originally found in symbolic targets
      harness: Allow the same module to be listed several times in boot modules
      tools/run-pdflatex.sh, docs: Allow Latex files to use the \include command
      kernel/plat_apm88xxxx: Correct gic_cpu_interface_enable function signature
      hake: Re-create Doxygen target

Reto Achermann (2):
      armv8/hake: use of gcc/g++ instead of gcc-5/g++5
      adding simple TFTP read test

Roni Häcki (78):
      Merge remote-tracking branch 'origin/toolchain1604' into device_queue
      DeviceQueues: Small changes to interface and Adding empty c functions
      DeviceQeues: Implemented memory region pool management
      DeviceQueues: extended region pool managment to return fixed size buffers of regions
      DeviceQueues: interface changes and renaming
      DeviceQueue: moved queue state from .h to .c
      DeviceQueue: added descriptor queues
      Merge branch 'master' into device-queue
      DeviceQueue: Change to interface
      DeviceQueue: removed code for fixed size memory allocation
      DeviceQueue: first try to keep track of used buffer ids
      DeviceQueue: Added device queue errors
      DeviceQueue: added new errors
      DeviceQueue: keeping track of buffer ids should work
      DeviceQueue: devif flounder interface
      DeviceQueue: pushed descriptor queue to desc_queue.c
      DeviceQueue: shared memory queue implementation
      DeviceQueue: Started queue and channel setup
      DeviceQueue: Channel setup callbacks and empty functions
      DeviceQueue: Setup working, create reponse pagefaults on response                  (RPC broken?). Will now change to async messages instead of RPC
      DeviceQueue: Change to async messages
      DeviceQueue: Changed descq init
      DeviceQueue: forgot to add queue_interface.c
      DeviceQueue: removed net/block init
      DeviceQueue: Register working
      DeviceQueue: Passing from user to device working
      DeviceQueue: Enqueue/Dequeue of descriptors now bidirectional
      DeviceQueue: deregister call working.
      DeviceQueue: test and dummy device added
      DeviceQueue: Keeping track of regions on both sides
      DeviceQueue: keeping track of buffers on both sides
      DeviceQueue: devq_control working
      DeviceQueue: sending back error from flounder handlers
      DeviceQueue: Direct interface, create/register/enqueue working
      DeviceQueue: Direct functions working
      DeviceQueue: fix for buffer id in enqueue
      DeviceQueue: Loopback device functions implemented
      DeviceQueue: forwarding working up to other endpoint, way back not yet
      DeviceQueue: Forwarding working
      DeviceQueue: control forward working
      Merge branch 'master' into device-queue
      DeviceQueue: Split up Data and Control plane into two channels
      DeviceQueue: Creation of forwarding queue changed
      DeviceQueue: Test changed to test forwarding functions only when flag is defined
      DeviceQueue: Solarflare driver added
      DeviceQueue: Solarflare driver removed mac stats cap transfer
      DeviceQueue: Direct Solarflare queue implementation
      DeviceQueue: Solarflare backend fully implemented
      DeviceQueue: Solarflare user level queues receive working with 4k buffers
      DeviceQueue: Solarflare user level working with buffer sizes < 4k.
      DeviceQueue: small bug in test fixed
      DeviceQueue: renamed include/devif/sfn5122f_devif_direct.h
      DeviceQueue: changed signature of setup
      DeviceQeueu: addes some soalareflare error
      DeviceQueue: solarflare normal queue creation working
      DeviceQueue: implemented rest of functions for normal solarflare driver
      Fixed bug in test
      DeviceQueue: Restructering library parts intermediate commit
      DeviceQueue: added callback to solarflare create
      DeviceQueue: Solaflare queue destroy added
      DeviceQueue: Added flounder interface for IDC backend
      DeviceQueue: Implementation IDC backend
      DeviceQueue: remove old loopback header
      DeviceQueue: added functionality to keep track of buffers/regions
      DeviceQueue: IDC backend one way working
      DeviceQueue: Fixed setup bug
      DeviceQueue: IDC backend working
      DeviceQueue: Some cleanup
      DeviceQueue: more cleanup
      DeviceQueue: fixed bug in solarflare backend
      DeviceQueue: increased number of buffers used in test
      DeviceQueue: bugfix in solarflare queue destroy
      Fixed bug in test
      Merge branch 'device-queue' of ssh://code.systems.ethz.ch:8006/diffusion/BFI/barrelfish into device-queue
      Merge branch 'device-queue'
      Removed old queue interface header file
      Solarflare driver header fix
      AHCI always failing assertion removed

Simon Gerber (31):
      harness: pandaboard: build right image file and remove unused function
      armv7: kaluga, startd: enable proper waiting on all_spawnds_up
      armv7: handle VNodeCmd_Identify
      x86_64: kernel: fix handle_vnode_identify to not do superfluous switch on objtype
      harness: armv7 fvp: add 4 core machine
      harness: compiler-rt: factor vector FP tests into their own testcase as we do not have VFP support on ARMv7
      armv7: kaluga: remove commented out code which manually sets all_spawnds_up
      armv7: zynq7: manually set all_spawnds_up as we do not seem to be able to boot the second core yet
      kaluga: remove debug printf
      harness: compiler rt: fix VFP test
      harness: pandaboard: powercycle rack pandaboards after sending boot command
      Revert "harness: pandaboard: powercycle rack pandaboards after sending boot command"
      ump_bench: num_cores in main.c is number of spawned clients, so we wait for num_cores answers
      harness: compiler rt: fix vector fp test again
      harness: exit with non-zero when tests fail
      libmdb: add argument sanity check in mdb_is_inside()
      kernel: retype: more diagnostics on retype range checks
      capabilities: make mapping caps size 1 (from 0) so they do not mess up mdb_range_query()
      libbarrelfish: memobj_anon: return error if frame_identify fails
      acpi: osglue: improve and simplify AcpiOsMapMemory and AcpiOsUnmapMemory
      libbarrelfish: make cap deletion in memobj_destroy_anon() optional
      acpi: map/unmap: always call mm_realloc_range() for all pages when a partial mapping exists for request
      libbarrelfish: memobj_anon: fill: refill slab allocator when one slab left
      libspawndomain: elf_allocate: remove wrong(?) vspace_lvaddr_to_genvaddr()
      acpi: Backout changes to acpica_osglue code.
      libbarrelfish: memobj_anon: change refilling flag to be per memobj
      libbarrelfish: vspace_pinned_alloc: acquire lock nested, as we can recurse back into here through memobj->fill
      libbarrelfish: memobj_anon: fix vregion slab refilling
      harness: Remove old pandaboard buildall harness test
      Merge GitHub PR#3.
      harness: armv8 efi machine: fix boot module list extraction

More information about the Barrelfish-users mailing list