Skip to content

Commit

Permalink
Add release notes for 0.5.0
Browse files Browse the repository at this point in the history
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
  • Loading branch information
Ivan-Velickovic committed Aug 6, 2024
1 parent 6ed5141 commit d76b00b
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
1 change: 1 addition & 0 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Upstream-Name: seL4 Device Driver Framework
Source: https://github.com/au-ts/sddf

Files:
CHANGES.md
build.zig.zon
examples/i2c/build.zig.zon
examples/serial/build.zig.zon
Expand Down
90 changes: 90 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Revision history for sDDF

## Release 0.5.0

### General

* Move to Microkit 1.4.0.
* Previously a development version of Microkit was used, now we use
an official release for everything.
* Add QEMU support to the timer and echo server examples.
* Remove dependency on a full libc, all the provided components use our own
utility functions now.
* Transition to a modular 'Makefile snippets' build system structure to
simplify the composition of sDDF components.
* Introduce snippets for the Zig build system, as an alternative to Make.
* Instructions for using the Zig build system can be found in each
example's README.
* No components are solely built with Zig, the primary build system is
still Make.
* Introduce configurable printf logging for debug versus release mode, making
it easier to have some components continue logging to the serial in release
mode.

### Block

* Move the capacity of the shared queue out of shared memory
and into the queue handles. This prevents malicious clients
from messing with the queue size and potentially causing the
virtualiser or other trusted components to crash/misbehave.
* Introduce a config header to enable the system designer to have a variable
amount of clients, previously it was all hard-coded.
* It should be noted that we are working on tooling to automate this process
and these configs are likely to significantly change by the next release.
* Change block virtualiser to use offsets when interfacing with clients and DMA
physical addresses when interfacing with the driver.
* This makes the block system consistent with the networking system in how it
handles client-to-driver address translation.
* Use 'capacity' instead of size in the shared queue library to avoid confusion.

### I2C

* Use 'capacity' instead of size in the shared queue library to avoid confusion.

### Network

* Add a virtIO network driver.
* This allows us to have networking on QEMU making it easier to simulate
non-trivial systems.
* Fix caching operations in RX virtualiser, previously this would lead to
issues with TCP traffic.
* Various bug fixes in the Amlogic ethernet driver.
* Fixes and changes for improved TCP performance.
* Add support for broadcast packets in the RX virtualiser, previously
broadcast packets were incorrectly going to the ARP component instead of
being directed to all clients.
* We have only run into this so far when simulating our systems using
QEMU since its internal DHCP server sends broadcast packets.
* Introduce a config header to enable the system designer to have a variable
amount of clients, previously it was all hard-coded.
* It should be noted that we are working on tooling to automate this process
and these configs are likely to significantly change by the next release.

### Serial

* Redesign the entire sub-system.
* The serial device class was previously following
the network design which was not an ideal design for serial devices. This new
design is intended to be used for character-by-character devices. DMA
capable serial devices will have a separate design, more aligned with the design
of our other DMA capable devices such as ethernet and block.
* Various bugs were fixed and so individual drivers as well as the system
as a whole should be more stable.
* Introduce a config header to enable the system designer to have a variable
amount of clients, previously it was all hard-coded.
* It should be noted that we are working on tooling to automate this process
and these configs are likely to significantly change by the next release.

### Sound

This release adds the initial sound virtualiser and shared queue library.

We do not yet have any native sound drivers.

See the design document for the specification and more information.

### Timer

* Add a driver for the ARM architectural timer (necessary for QEMU on ARM).
* Various cleanup/refactoring of all the drivers to simplify their implementation
and fix bugs.

0 comments on commit d76b00b

Please sign in to comment.