Skip to content

Commit

Permalink
Merge pull request #185 from firesim/dev
Browse files Browse the repository at this point in the history
Release 1.11.0
  • Loading branch information
NathanTP authored Jan 12, 2021
2 parents 45aebac + f95d4f7 commit aa8e6aa
Show file tree
Hide file tree
Showing 76 changed files with 2,367 additions and 494 deletions.
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
*.swp
test.log
wlutil/_command.sh
wlutil/fedora/rootfs.img
wlutil/fedora/rootfs.img.xz
*__pycache__
.doit.db*
marshal-config.yaml
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
[submodule "opensbi"]
path = boards/default/firmware/opensbi
url = https://github.com/riscv/opensbi.git
[submodule "br/buildroot"]
path = wlutil/br/buildroot
[submodule "boards/default/distros/br/buildroot"]
path = boards/default/distros/br/buildroot
url = https://github.com/buildroot/buildroot.git
[submodule "wlutil/busybox"]
path = wlutil/busybox
Expand Down
40 changes: 40 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,46 @@
This changelog follows the format defined here: https://keepachangelog.com/en/1.0.0/
Versioning follows semantic versioning as described here: https://semver.org/spec/v2.0.0.html

## [1.11.0] - 2021-01-12
This release coordinates with Chipyard v1.4.0 and includes several
board-related features, improving customizability of the hard-coded base
components. Another important change to note is the inclusion of an updated
default icenet driver that requires a recent version of that device in
RocketChip (see details below). Finally, the Fedora distribution has been
updated to a more recent version.

### Added
* PR #174 adds the ability to run multiple jobs from a single call to marshal.
This is useful for testing multi-node workloads, although we still lack a
simulated network.
* PR #181 modularizes simulator integration (the 'install' command). We can now
add custom installation targets as part of the board specification.
* PR #182 Allows users to customize the distro for their workload. This is
particularly important for buildroot which has many options that are hard to
modify in a child workload. Workloads that based directly on a distro (rather
than one of the board's base workloads like 'br-base.json') will need to be
updated to use the new 'distro' option, users are discouraged from doing this.
Along with the new 'distro' workload option, board/distro handling was
overhauled significantly internally. The result of this is that boards (the
bottom of the inheritance tree along with all the basic default components) are
much more self-contained and it's easier to specify new ones.

### Changed
* PR #175 updates the Fedora distro base image to Fedora 31
* PR #177 allows you to explicitly disable device drivers in parent workloads
(e.g. to disable the icenet driver in br-base).
* PR #178 adds warning messages when workloads include unrecognized options.
This helps avoid subtle bugs in workloads.
* PR #180 updates the default icenet driver to support changes in the icenet
device. These changes are not backwards compatible, this FireMarshal release
is coordinated with Chipyard 1.4.0 to ensure compatiblity. The specific version
was introduced in https://github.com/firesim/icenet-driver/pull/3. However,
users may still explicitly provide the old driver in their workload description
using the linux/modules option.

### Fixed


## [1.10.0] - 2020-10-05
The biggest change in this release is the introduction of OpenSBI as the
default firmware. BBL is still supported, but no longer the default. Other
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FireMarshal
==================================

This tool builds base images for several linux-based distros that work with qemu,
spike, and firesim.
spike, and firesim.

This is just a quick primer. To see full documentation, please see the official
documentation:
Expand Down Expand Up @@ -55,15 +55,15 @@ submodules. Otherwise, you should update the required submodules by running:

Building workloads:

./marshal build workloads/br-base.json
./marshal build br-base.json

To run in qemu:

./marshal launch workloads/br-base.json
./marshal launch br-base.json

To install into FireSim (assuming you cloned this as a submodule of firesim or chipyard):

./marshal install workloads/br-base.json
./marshal install br-base.json

# Security Note
Be advised that FireMarshal will run initialization scripts provided by
Expand Down
1 change: 1 addition & 0 deletions boards/default/distros/bare/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .bare import *
32 changes: 28 additions & 4 deletions wlutil/baremetal/bare.py → boards/default/distros/bare/bare.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,52 @@

bare_dir = os.path.dirname(os.path.realpath(__file__))

def hashOpts(opts):
return None

def mergeOpts(base, new):
return base

def initOpts(cfg):
pass

class Builder:
def baseConfig(self):
"""Bare is basically a noop just to have consistency with other distros"""
def __init__(self, opts):
pass


def getWorkload(self):
return {
'name' : 'baremetal-base',
'distro' : 'bare',
'name' : 'bare',
'isDistro' : True,
'distro' : {
'name' : 'bare',
'opts' : {}
},
'workdir' : bare_dir,
'qemu' : None,
'builder' : self
}

# Build a base image in the requested format and return an absolute path to that image

def buildBaseImage(self):
raise NotImplementedError("Baremetal workloads currently do not support disk images")


def upToDate(self):
"""Report whether the distro is up to date or not.
Trivially true because the bare-distro doesn't actually do anything
"""
return [True]


# Set up the image such that, when run in qemu, it will run the script "script"
# If None is passed for script, any existing bootscript will be deleted
@staticmethod
def generateBootScriptOverlay(script):
raise NotImplementedError("Baremetal code does not currently support 'run', 'init', or 'overlay'")

def stripUart(self, lines):
return lines
File renamed without changes.
1 change: 1 addition & 0 deletions boards/default/distros/br/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .br import *
Loading

0 comments on commit aa8e6aa

Please sign in to comment.