diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7093589
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.tgz
+*/setup-sshd
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..2e74d81
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,4 @@
+[gerrit]
+host=review.trustedfirmware.org
+port=29418
+project=ci/fvp-dockerfiles
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2b7c06c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+# fvp-dockerfiles
+
+Host dockerfiles used in the [LAVA lab](https://tf.validation.linaro.org/). For repository usage,
+check the official documentation at https://tf-ci-users-guide.readthedocs.io/en/latest/
diff --git a/create-model-dockerfile.sh b/create-model-dockerfile.sh
new file mode 100755
index 0000000..5c582b9
--- /dev/null
+++ b/create-model-dockerfile.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+#
+# Copyright (c) 2021, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+# Creates a dockerfile based on a fvp model (model).
+
+# The scripts takes two argument: the model tarball's filename (first argument)
+# and target directory to store the created Dockerfile (second argument)
+#
+
+# globals
+OS="${OS:-ubuntu}"
+OS_VER="${OS_VERSION:-bionic}"
+MODEL_DIR="${MODEL_DIR:-/opt/model}"
+
+function usage() {
+    echo "Usage: $0 model-tarball target-dir" 1>&2
+    exit 1
+}
+
+function get_model_model_ver() {
+    local tgz=$1
+    local arr_model=(${tgz//./ })
+    local x=${arr_model[0]##*_}
+    local y=${arr_model[1]}
+    local z=${arr_model[2]}
+    if [ -n "$z" -a "$z" != "tgz" ]; then
+    		MODEL_VER="${x}.${y}.${z}"
+    else
+    		MODEL_VER="${x}.${y}"
+    fi
+    MODEL=$(echo $tgz | sed "s/_${MODEL_VER}.tgz//")
+}
+
+function main() {
+    local tarball=$1
+    local target_dir=$2
+
+    # get MODEL and MODEL_VER
+    get_model_model_ver $tarball
+
+    # check variables are populated
+    MODEL="${MODEL:?}"
+    MODEL_VER="${MODEL_VER:?}"
+
+    # replace template macros with real model values
+    sed -e "s|\${OS}|${OS}|g" \
+        -e "s|\${OS_VER}|${OS_VER}|g" \
+        -e "s|\${MODEL}|${MODEL}|g" \
+        -e "s|\${MODEL_VER}|${MODEL_VER}|g" \
+        -e "s|\${MODEL_DIR}|${MODEL_DIR}|g" < dockerfile-template > $target_dir/Dockerfile
+}
+
+[ $# -ne 2 ] && usage
+
+tarball=$1; target_dir=$2; main ${tarball} ${target_dir}
diff --git a/create-model-tag.sh b/create-model-tag.sh
new file mode 100755
index 0000000..91a31e2
--- /dev/null
+++ b/create-model-tag.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# Copyright (c) 2021, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+# Creates a 'tag' based on a fvp model (model).
+#
+# The script takes a single argument: the model tarball's filename (first argument)
+#
+
+function usage() {
+    echo "Usage: $0 model-tarball" 1>&2
+    exit 1
+}
+
+# Create a tag based a on fvp model
+function create-tag() {
+    local model=$1
+    local tag
+
+    # get model basename
+    tag=$(basename $model)
+
+    # remove any extension (tgz expected)
+    tag=${tag%.*}
+
+    # finally lowercase
+    tag=${tag,,}
+
+    echo $tag
+}
+
+[ $# -ne 1 ] &&  usage
+
+tarball=$1; create-tag ${tarball}
diff --git a/create_fvp_dockerfile.sh b/create_fvp_dockerfile.sh
new file mode 100755
index 0000000..55fbf0f
--- /dev/null
+++ b/create_fvp_dockerfile.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# Copyright (c) 2021, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+OS="${OS:-ubuntu}"
+OS_VER="${OS_VERSION:-bionic}"
+MODEL_DIR="${MODEL_DIR:-/opt/model}"
+
+function model() {
+tgz=$1
+arr_model=(${tgz//./ })
+x=${arr_model[0]##*_}
+y=${arr_model[1]}
+z=${arr_model[2]}
+if [ -n "$z" -a "$z" != "tgz" ]; then
+		MODEL_VER="${x}.${y}.${z}"
+else
+		MODEL_VER="${x}.${y}"
+fi
+MODEL=$(echo $tgz | sed "s/_${MODEL_VER}.tgz//")
+}
+
+target_dir=$1
+tgz=$2
+
+# get MODEL and MODEL_VER
+model $tgz
+
+# replace template with real values
+sed -e "s|\${OS}|${OS}|g" \
+    -e "s|\${OS_VER}|${OS_VER}|g" \
+    -e "s|\${MODEL}|${MODEL}|g" \
+    -e "s|\${MODEL_VER}|${MODEL_VER}|g" \
+    -e "s|\${MODEL_DIR}|${MODEL_DIR}|g" < dockerfile-template > $target_dir/Dockerfile
diff --git a/dockerfile-template b/dockerfile-template
new file mode 100644
index 0000000..97485c3
--- /dev/null
+++ b/dockerfile-template
@@ -0,0 +1,41 @@
+FROM ${OS}:${OS_VER} as FVP
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV PKG_DEPS="\
+    bc \
+    ca-certificates \
+    curl \
+    libatomic1 \
+    libdbus-1-3 \
+    openssh-server \
+    telnet \
+    xterm \
+"
+
+RUN set -e ;\
+    apt update -q=2 ;\
+    apt full-upgrade -q=2 --yes ;\
+    apt install -q=2 --yes --no-install-recommends ${PKG_DEPS} ;\
+    # Cleanup
+    apt clean ;\
+    rm -rf /var/lib/apt/lists/* /tmp/*
+
+FROM FVP
+
+WORKDIR ${MODEL_DIR}
+
+COPY setup-sshd /usr/sbin/setup-sshd
+
+# Add the FVP model tarball
+# NOTE: some tarballs contain an installer script others don't, so it may be the case
+# that the ADD instruction do install the model under /opt/model
+ADD ${MODEL}_${MODEL_VER}.tgz .
+
+# Install packages and model
+RUN ${MODEL_DIR}/${MODEL}.sh \
+        --i-agree-to-the-contained-eula \
+        --verbose \
+        --destination ${MODEL_DIR}/${MODEL} && rm -f ${MODEL_DIR}/${MODEL}.sh || true
+
+EXPOSE 22
+ENTRYPOINT ["/usr/sbin/setup-sshd"]
diff --git a/setup-sshd b/setup-sshd
new file mode 100755
index 0000000..3cd9657
--- /dev/null
+++ b/setup-sshd
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+passwd -d root
+echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
+echo "PermitEmptyPasswords yes" >> /etc/ssh/sshd_config
+mkdir -p /var/run/sshd
+/usr/sbin/sshd -D &
+
+exec "$@"
