diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4d3f17cb005d8ff130e0ece4522e69e7288633bc..bb6b9a68d71cffadf5c6c356ccca2355e5f062d2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,18 +1,22 @@
 # Gitlab CI file to generate the system image .img file.
-#image: debian:bullseye-slim
-image: source.mnt.re:5050/reform/build-base-image-docker:latest
+image: debian:bullseye-slim
 
 build:
   script:
     - sed -i 's|http://deb.|http://ftp.de.|g' /etc/apt/sources.list
     - apt update
     - apt-get -y install sudo gzip libext2fs2 pigz
-    - apt-get -y install bc parted multistrap udisks2 gcc-aarch64-linux-gnu make device-tree-compiler qemu-user-static binfmt-support build-essential bison flex libssl-dev bash git
-    - cd reform2-imx8mq/
+    - apt-get -y install bc parted multistrap udisks2 gcc-aarch64-linux-gnu make device-tree-compiler qemu-user-static binfmt-support build-essential bison flex libssl-dev bash git qemu-system-aarch64
+    - cd reform2-imx8mq
     - bash mkimage.sh
     - pigz reform-system.img
+    - pigz reform-rescue-system.img
   artifacts:
     paths:
       - "reform2-imx8mq/linux/arch/arm64/boot/Image"
+      - "reform2-imx8mq/linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dtb"
+      - "reform2-imx8mq/linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2-hdmi.dtb"
       - "reform2-imx8mq/u-boot/flash.bin"
+      - "reform2-imx8mq/u-boot/flash-rescue.bin"
       - "reform2-imx8mq/reform-system.img.gz"
+      - "reform2-imx8mq/reform-rescue-system.img.gz"
diff --git a/reform2-imx8mq/mkkernel.sh b/reform2-imx8mq/mkkernel.sh
index 677f722d5538335f4a486bb1c5ce407f64ef8109..b9cbcb644ae52355c21d79a0d4be33b305b87c1e 100755
--- a/reform2-imx8mq/mkkernel.sh
+++ b/reform2-imx8mq/mkkernel.sh
@@ -4,20 +4,12 @@ set -x
 set -e
 
 export ARCH=arm64
-#export LOADADDR=0x40480000
 export CROSS_COMPILE=aarch64-linux-gnu-
 
 if [ ! -d linux ]
 then
   echo "Cloning Linux..."
-  mkdir linux
-  cd linux
-  git init
-  git remote add origin https://github.com/torvalds/linux.git
-  # temporary linux 5.11rc7 commit
-  git fetch --depth 1 origin e0756cfc7d7cd08c98a53b6009c091a3f6a50be6
-  git checkout FETCH_HEAD
-  cd ..
+  git clone --depth 1 --branch v5.12 https://github.com/torvalds/linux.git
 fi
 
 cp ./template-kernel/*.dts ./linux/arch/arm64/boot/dts/freescale/
@@ -25,6 +17,10 @@ cp ./template-kernel/kernel-config ./linux/.config
 
 cd linux
 
+echo "== kernel config =="
+cat .config
+echo "== end kernel config =="
+
 for PATCHFILE in ../template-kernel/patches/*.patch
 do
   echo PATCH: $PATCHFILE
diff --git a/reform2-imx8mq/mkuboot.sh b/reform2-imx8mq/mkuboot.sh
index 9d6378f3c0666419384e171f43aedfadad173133..3a5a5cc0615e180ab6cbbf038bb8f04fa4e471cc 100755
--- a/reform2-imx8mq/mkuboot.sh
+++ b/reform2-imx8mq/mkuboot.sh
@@ -6,7 +6,7 @@ set -e
 if [ ! -d u-boot ]
 then
   echo "Cloning U-Boot..."
-  git clone --depth 1 https://source.mntmn.com/MNT/reform-boundary-uboot.git u-boot
+  git clone --depth 1 https://source.mnt.re/reform/reform-boundary-uboot.git u-boot
 fi
 
 cd u-boot
diff --git a/reform2-imx8mq/mkuserland.sh b/reform2-imx8mq/mkuserland.sh
index 49fbb372a07990df934f71bfc7096f636a012e2f..6e4f2aba172917f8cfdffb8890cf7b7cd50fea0c 100755
--- a/reform2-imx8mq/mkuserland.sh
+++ b/reform2-imx8mq/mkuserland.sh
@@ -1,11 +1,12 @@
 #!/bin/bash
 
 set -e
+set -x
 
 ETC=./template-etc
 SKEL=./template-skel
 
-mmdebstrap --architectures=arm64 --components=main --variant="minbase" sid target-userland http://ftp.de.debian.org/debian
+mmdebstrap --architectures=arm64 --components=main --variant="minbase" --include="apt apt-utils gnupg ca-certificates cpio bsdmainutils init-system-helpers procps gpgv debian-archive-keyring readline-common cron netbase iproute2 ifupdown isc-dhcp-client iptables iputils-ping locales less net-tools curl wget nano micro vim coreutils parted file git sudo console-setup console-data unicode-data kbd gpm systemd libpam-systemd systemd-sysv bash-completion ncurses-term alsa-utils brightnessctl brightness-udev usbutils pciutils fbset netcat-traditional nfacct traceroute wpasupplicant htop ncdu ntpdate ntp screen tmux telnet lm-sensors rfkill dosfstools e2fsprogs dialog rsync busybox pulseaudio  sway grim slurp xwayland xterm xfce4-terminal rofi arc-theme thunar policykit-1 libblockdev-dm2 libblockdev-crypto2 gnome-disk-utility cryptsetup openjdk-11-jre-headless  gnome-system-monitor eog evince mpv gedit engrampa connman-gtk gnome-icon-theme breeze-icon-theme fonts-noto-color-emoji lxpolkit mesa-utils w3m man-db pavucontrol python3-psutil ircii elinks  zlib1g-dev patch expat bison flex libunwind-dev libwayland-dev wayland-protocols libwayland-egl-backend-dev libx11-dev libx11-xcb-dev libxdamage-dev libxfixes-dev libxcb-dri3-dev libxcb-xfixes0-dev libxcb-sync-dev libxrandr-dev libxext-dev libxcb-glx0-dev libxcb-present-dev libxcb-dri2-0-dev gettext autopoint libpixman-1-dev libbsd-dev libxkbfile-dev libxcb-composite0-dev libxcb-xinput-dev libxcb-icccm4-dev libxfont-dev nettle-dev libdbus-1-dev libsystemd-dev libpciaccess-dev llvm-dev libudev-dev libmtdev-dev libevdev-dev libxshmfence-dev xutils-dev libdrm-dev libxxf86vm-dev meson gcc g++ python3-setuptools python3-mako xfonts-utils libepoxy-dev libjson-c-dev libpcre3-dev libpango1.0-dev libxkbcommon-dev libinput-dev autoconf make libtool intltool libxml2-dev libxfce4ui-2-dev libgarcon-1-dev xfce4-dev-tools libdbusmenu-gtk3-dev libfmt-dev libgirepository1.0-dev libgtkmm-3.0-dev libjsoncpp-dev libmpdclient-dev libnl-3-dev libnl-genl-3-dev libpulse-dev  libsigc++-2.0-dev libspdlog-dev  libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsdl2-dev libsdl2-image-dev libflac-dev libmpg123-dev libpng-dev libmpeg2-4-dev" sid target-userland http://ftp.de.debian.org/debian
 
 # install kernel
 cp linux/arch/arm64/boot/Image target-userland/
@@ -36,7 +37,6 @@ mkdir -p target-userland/etc/skel/Videos
 
 # populate /etc
 cp $ETC/ld.so.conf target-userland/etc # or our libraries won't be picked up
-cp $ETC/resolv.conf target-userland/etc
 mkdir -p target-userland/etc/dhcp
 cp $ETC/dhclient.conf target-userland/etc/dhcp
 cp $ETC/motd-rescue target-userland/etc/motd # we start with the rescue system
@@ -48,9 +48,8 @@ cp $ETC/reform-* target-userland/etc
 # copy pulse config files that will be moved inside the target fs later
 cp $ETC/pulse/* target-userland/
 
-# mesa etc. patches
+# custom built libraries
 mkdir -p target-userland/root/src
-cp -Rv template-userland/patches-mesa target-userland/root/src/patches-mesa
 
 chroot target-userland /bin/bash <<EOF
 export DEBIAN_FRONTEND=noninteractive
@@ -59,23 +58,18 @@ export LC_ALL=C
 export LANGUAGE=C
 export LANG=C
 
+set -x
+set -e
+
 echo "root:root" | chpasswd
 passwd -d root # remove root password
 
-# mount /proc if it doesn't exist
-if [[ ! -e /proc/version ]]; then
-  mount -t proc none /proc
-fi
-
 ln --force --symbolic /usr/share/zoneinfo/Europe/Berlin /etc/localtime
-echo "locales locales/default_environment_locale select en_US.UTF-8" | debconf-set-selections
-echo "locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8" | debconf-set-selections
 dpkg --configure -a
 
-apt update
-apt install -y apt apt-utils gnupg ca-certificates
-
-apt install -y cpio bsdmainutils init-system-helpers procps gpgv debian-archive-keyring readline-common cron netbase iproute2 ifupdown isc-dhcp-client iptables iputils-ping locales less net-tools curl wget nano micro vim coreutils parted file git sudo console-setup console-data unicode-data kbd gpm systemd libpam-systemd systemd-sysv bash-completion ncurses-term alsa-utils brightnessctl brightness-udev usbutils pciutils fbset netcat-traditional nfacct traceroute wpasupplicant htop ncdu ntpdate ntp screen tmux telnet lm-sensors rfkill dosfstools e2fsprogs
+echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
+locale-gen
+echo "LANG=en_US.UTF-8" > /etc/default/locale
 
 # add MNT Research/Reform apt repository
 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 376511EB67AD7BAF
@@ -86,8 +80,6 @@ apt update
 # install essential MNT Reform system management scripts and docs
 apt install -y reform-tools reform-handbook
 
-apt install -y sway grim slurp xwayland xterm xfce4-terminal rofi arc-theme thunar policykit-1 libblockdev-dm2 libblockdev-crypto2 gnome-disk-utility cryptsetup  gnome-system-monitor eog evince mpv gedit engrampa connman-gtk gnome-icon-theme breeze-icon-theme fonts-noto-color-emoji lxpolkit mesa-utils w3m man-db pulseaudio pavucontrol python3-psutil ircii
-
 # move pulse config in place
 # FIXME: this is brittle and should go into a .deb
 mv /analog-input-reform.conf /usr/share/pulseaudio/alsa-mixer/paths/
@@ -97,11 +89,7 @@ mv /default.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/
 mv /etc/reform-hw-setup.service /etc/systemd/system/
 systemctl enable reform-hw-setup.service
 
-# install build dependencies
-apt install -y zlib1g-dev patch expat bison flex libunwind-dev libwayland-dev wayland-protocols libwayland-egl-backend-dev libx11-dev libx11-xcb-dev libxdamage-dev libxfixes-dev libxcb-dri3-dev libxcb-xfixes0-dev libxcb-sync-dev libxrandr-dev libxext-dev libxcb-glx0-dev libxcb-present-dev libxcb-dri2-0-dev gettext autopoint libpixman-1-dev libbsd-dev libxkbfile-dev libxcb-composite0-dev libxcb-xinput-dev libxcb-icccm4-dev libxfont-dev nettle-dev libdbus-1-dev libsystemd-dev libpciaccess-dev llvm-dev libudev-dev libmtdev-dev libevdev-dev libxshmfence-dev xutils-dev libdrm-dev libxxf86vm-dev meson gcc g++ python3-setuptools python3-mako xfonts-utils libepoxy-dev libjson-c-dev libpcre3-dev libpango1.0-dev libxkbcommon-dev libinput-dev autoconf make libtool intltool libxml2-dev libxfce4ui-2-dev libgarcon-1-dev xfce4-dev-tools libdbusmenu-gtk3-dev libfmt-dev libgirepository1.0-dev libgtkmm-3.0-dev libjsoncpp-dev libmpdclient-dev libnl-3-dev libnl-genl-3-dev libpulse-dev  libsigc++-2.0-dev libspdlog-dev  libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsdl2-dev libsdl2-image-dev libflac-dev libmpg123-dev libpng-dev libmpeg2-4-dev
-
 # remove some unnecessary stuff (apparmor slows down boot)
-
 apt remove -y ofono foot apparmor
 
 # disable built-in sleep targets in favor of reform-standby script
diff --git a/reform2-imx8mq/mkuserland2.sh b/reform2-imx8mq/mkuserland2.sh
index 39ebc025159147eb19d23eafce9b84e7ef21be12..6b332f72d981c6a8bbc56e463dbc56054d56bbbd 100755
--- a/reform2-imx8mq/mkuserland2.sh
+++ b/reform2-imx8mq/mkuserland2.sh
@@ -5,77 +5,71 @@ export LC_ALL=C
 export LANGUAGE=C
 export LANG=C
 
+set -e
+set -x
+
 cd /root
 mkdir -p src
 cd src
 
-git clone --depth 1 https://gitlab.freedesktop.org/mesa/drm.git
-git clone --depth 1 --branch mesa-20.3.4 https://gitlab.freedesktop.org/mesa/mesa.git
-git clone --depth 1 https://github.com/wayland-project/wayland.git
+git clone --depth 1 --branch libdrm-2.4.106 https://gitlab.freedesktop.org/mesa/drm.git
+
+# there's no tag yet for 21.1.3 which will probably include all patches we need
+# so fetch the most recent commit at the time of putting this script together.
+mkdir -p mesa
+cd mesa
+git init
+git remote add origin https://gitlab.freedesktop.org/mesa/mesa.git
+git fetch origin 2ebf4e984b51825c37562e0221bde327188e3eaf
+git reset --hard FETCH_HEAD
+cd ..
+
+mkdir -p xserver
+cd xserver
+git init
+git remote add origin https://gitlab.freedesktop.org/xorg/xserver.git
+git fetch origin f3eb1684fa5008ad7c881f798a5efb7441b23035
+git reset --hard FETCH_HEAD
+cd ..
+
 git clone https://github.com/swaywm/wlroots.git
 git clone https://github.com/swaywm/sway.git
-git clone --depth 1 https://gitlab.freedesktop.org/xorg/xserver.git
-git clone --depth 1 https://github.com/Alexays/Waybar.git
-git clone --depth 1 https://github.com/any1/wayvnc.git
-git clone --depth 1 https://github.com/Hjdskes/cage.git
+git clone --depth 1 --branch 0.9.7 https://github.com/Alexays/Waybar.git
+git clone --depth 1 --branch v0.4.0 https://github.com/any1/wayvnc.git
+git clone --depth 1 --branch v0.1.3 https://github.com/Hjdskes/cage.git
 
 cd drm
 meson build -Detnaviv=true -Dradeon=false -Damdgpu=false -Dvmwgfx=false -Dfreedreno=false -Dvc4=false -Dnouveau=false
 ninja -C build install
 cd ..
+rm -rf drm
 
 ldconfig
 
 cd mesa
 meson build -Dplatforms=x11,wayland -Ddri3=true -Dgallium-drivers=swrast,etnaviv,kmsro,virgl -Dgbm=enabled -Degl=enabled -Dbuildtype=release -Db_ndebug=true
-
-# patch that disables broken MSAA in etnaviv (not yet upstreamed for some reason)
-patch -p1 <<ENDPATCH
---- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
-+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
-@@ -445,6 +445,10 @@ etna_screen_is_format_supported(struct pipe_screen *pscreen,
-    struct etna_screen *screen = etna_screen(pscreen);
-    unsigned allowed = 0;
-
-+   /* HACK to disable all MSAA, as is causes GPU crashes */
-+   if (sample_count > 1)
-+      return false;
-+
-    if (!gpu_supports_texture_target(screen, target))
-       return false;
-ENDPATCH
-
-# apply other mesa patches
-patch -p1 <../patches-mesa/7603.patch
-#patch -p1 <../patches-mesa/8618.patch
-#patch -p1 <../patches-mesa/9214.patch
-
-ninja -C build install
-cd ..
-
-ldconfig
-
-cd wayland
-meson build -Ddocumentation=false
 ninja -C build install
 cd ..
+rm -rf mesa
 
 ldconfig
 
 cd wlroots
-git checkout 0.12.0
+git checkout 0.13.0
 meson build
 ninja -C build install
 cd ..
+rm -rf wlroots
 
 ldconfig
 
 cd sway
-git checkout 1.5.1
+git checkout 1.6
 meson build
 ninja -C build install
 chmod +s /usr/local/bin/sway
 cd ..
+rm -rf sway
 
 cd xserver
 
@@ -100,6 +94,7 @@ ENDPATCH
 meson build -Dxorg=true -Dxwayland=true -Dglamor=true -Dxwayland_eglstream=false -Dxnest=false -Ddmx=false -Dxvfb=true -Dxwin=false -Dxephyr=false -Ddri3=true
 ninja -C build install
 cd ..
+rm -rf xserver
 
 # overwrite /usr/bin/Xwayland with symlink to our Xwayland (FIXME: brittle)
 
@@ -110,6 +105,7 @@ cd Waybar
 meson build
 ninja -C build install
 cd ..
+rm -rf Waybar
 
 cd wayvnc
 mkdir subprojects
@@ -120,10 +116,12 @@ cd ..
 meson build
 ninja -C build install
 cd ..
+rm -rf wayvnc
 
 cd cage
 meson build
 ninja -C build install
 cd ..
+rm -rf cage
 
 EOF
diff --git a/reform2-imx8mq/mkuserland3.sh b/reform2-imx8mq/mkuserland3.sh
index 935f0ff0edd3f01e6c755e3b0d254f088839c49a..33e40889d14e12091ec55a2a87be05731de10ed9 100755
--- a/reform2-imx8mq/mkuserland3.sh
+++ b/reform2-imx8mq/mkuserland3.sh
@@ -18,6 +18,9 @@ export LC_ALL=C
 export LANGUAGE=C
 export LANG=C
 
+set -x
+set -e
+
 # install applications
 
 apt install -y libreoffice libreoffice-gtk3 inkscape firefox-esr emacs gimp wmaker x11-utils
@@ -25,7 +28,7 @@ apt install -y chromium evolution freecad ardour sxiv neverball scummvm dosbox w
 
 # install patched software from mntre
 
-apt install -y kicad minetest libjsoncpp1 blender=2.79b+mntreform-2
+apt install -y kicad=5.1.9+dfsg1-1.1 minetest libjsoncpp1 blender=2.79b+mntreform-2
 
 # install a minimal gnome3
 
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-chat b/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-chat
deleted file mode 100755
index 93bbd7c2d40f688c583a8cb9c777d8b17d7016e8..0000000000000000000000000000000000000000
--- a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-chat
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-irc -c '#reform' -p 6697 reform$RANDOM SSLIRC/irc.freenode.org
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-boot-config b/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-boot-config
deleted file mode 100755
index 1954bcd54433820739eddeb9fb45048f4da9108e..0000000000000000000000000000000000000000
--- a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-boot-config
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-
-if [ "$EUID" -ne 0 ]
-  then echo "reform-boot-config has to be run as root / using sudo."
-  exit
-fi
-
-echo "This script selects your preferred boot medium. It writes your choice to the file /reform-boot-medium on the SD card. This file is interpreted by /sbin/reform-init at boot."
-echo "If the preferred boot medium is not available at boot time, reform-init will fall back to booting from the SD card."
-
-BOOTPREF=""
-
-case "$1" in
-	sd) BOOTPREF="sd";;
-	nvme) BOOTPREF="nvme";;
-	usb) BOOTPREF="usb";;
-esac
-
-if [[ "x$BOOTPREF" == "x" ]]
-then
-	echo "Usage: "
-	echo "  reform-boot-config sd      Boot from SD card (default)."
-	echo "  reform-boot-config nvme    Boot from NVMe SSD (encrypted or plain)."
-	echo "  reform-boot-config usb     Boot from USB storage device (encrypted or plain)."
-	exit
-fi
-
-MOUNTED_AT=$(mount | grep mmcblk1p1 | grep "on /" | cut -d ' ' -s -f 3)
-if [[ "x$MOUNTED_AT" != "x" ]]
-then
-	echo "Found SD card mounted at $MOUNTED_AT."
-	echo "$BOOTPREF" > "${MOUNTED_AT}/reform-boot-medium"
-	echo "Boot medium choice $BOOTPREF recorded in ${MOUNTED_AT}/reform-boot-medium."
-	echo "Restart MNT Reform (type: reboot) after saving your work to activate the changes."
-	exit
-fi
-
-echo "Assuming your system is not running from SD card. Mounting /dev/mmcblk1p1 on /boot."
-
-mount /dev/mmcblk1p1 /boot
-
-if [ $? -eq 0 ]
-then
-	echo "$BOOTPREF" > "/boot/reform-boot-medium"
-	echo "Boot medium choice $BOOTPREF recorded in /boot/reform-boot-medium."
-	echo "Restart MNT Reform (type: reboot) after saving your work to activate the changes."
-	umount /boot
-	exit
-fi
-
-echo "Error: could not mount the SD card."
-
-umount /boot
diff --git a/reform2-imx8mq/reform-tools_1.0-6/DEBIAN/control b/reform2-imx8mq/reform-tools_1.0-7/DEBIAN/control
similarity index 97%
rename from reform2-imx8mq/reform-tools_1.0-6/DEBIAN/control
rename to reform2-imx8mq/reform-tools_1.0-7/DEBIAN/control
index d02f1012e7812c6e312ca249bc2736454f9a2aec..aa63b4c70ee0cd34bff9a35152f31f94282c736b 100644
--- a/reform2-imx8mq/reform-tools_1.0-6/DEBIAN/control
+++ b/reform2-imx8mq/reform-tools_1.0-7/DEBIAN/control
@@ -1,5 +1,5 @@
 Package: reform-tools
-Version: 1.0-6
+Version: 1.0-7
 Section: base
 Priority: required
 Architecture: arm64
diff --git a/reform2-imx8mq/reform-tools_1.0-6/etc/reform-desktop-help b/reform2-imx8mq/reform-tools_1.0-7/etc/reform-desktop-help
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/etc/reform-desktop-help
rename to reform2-imx8mq/reform-tools_1.0-7/etc/reform-desktop-help
diff --git a/reform2-imx8mq/reform-tools_1.0-6/etc/reform-help b/reform2-imx8mq/reform-tools_1.0-7/etc/reform-help
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/etc/reform-help
rename to reform2-imx8mq/reform-tools_1.0-7/etc/reform-help
diff --git a/reform2-imx8mq/reform-tools_1.0-6/etc/reform-root-help b/reform2-imx8mq/reform-tools_1.0-7/etc/reform-root-help
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/etc/reform-root-help
rename to reform2-imx8mq/reform-tools_1.0-7/etc/reform-root-help
diff --git a/reform2-imx8mq/reform-tools_1.0-6/lib/systemd/system-shutdown/reform-poweroff b/reform2-imx8mq/reform-tools_1.0-7/lib/systemd/system-shutdown/reform-poweroff
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/lib/systemd/system-shutdown/reform-poweroff
rename to reform2-imx8mq/reform-tools_1.0-7/lib/systemd/system-shutdown/reform-poweroff
diff --git a/reform2-imx8mq/reform-tools_1.0-6/sbin/reform-init b/reform2-imx8mq/reform-tools_1.0-7/sbin/reform-init
similarity index 70%
rename from reform2-imx8mq/reform-tools_1.0-6/sbin/reform-init
rename to reform2-imx8mq/reform-tools_1.0-7/sbin/reform-init
index f231fea3722d17081c318a9f3327300f676b9a06..ae5b5beb0c39d7053d5157fcdd79030a8e4b5cf6 100755
--- a/reform2-imx8mq/reform-tools_1.0-6/sbin/reform-init
+++ b/reform2-imx8mq/reform-tools_1.0-7/sbin/reform-init
@@ -5,8 +5,10 @@ echo "MNT Reform: reform-init checking boot media..."
 
 /bin/mount -t proc /proc /proc
 
-BOOTPREF=$(cat /reform-boot-medium) # Read config file from reform-boot-config script
-BOOTPART="/dev/mmcblk1p1" # SD card
+# Read config file generated by reform-boot-config script
+BOOTPREF=$(cat /reform-boot-medium)
+# Default to SD card
+BOOTPART="/dev/mmcblk1p1"
 
 if [ "x$BOOTPREF" == "x" ]
 then
@@ -14,32 +16,31 @@ then
 	BOOTPREF="sd"
 fi
 
-echo "Your boot preference is: '$BOOTPREF'"
+echo "Your boot preference is: \"$BOOTPREF\""
 
 # Check config
 if [ "$BOOTPREF" == "usb" ]; then
-	echo "Booting from USB storage device, after 3sec."
-	sleep 3
+	echo "Booting from USB storage in 3 seconds."
 	BOOTPART="/dev/sda1"
 elif [ "$BOOTPREF" == "nvme" ]; then
 	echo "Booting from NVMe SSD."
 	BOOTPART="/dev/nvme0n1p1"
 else
 	# Default. Boot from SD card (already mounted by kernel).
-	echo "Booting from SD card."
+	echo "Booting from SD card (or eMMC)."
 	exec /sbin/init
 fi
 
 # Check if partition exists
 if [ ! -e $BOOTPART ]; then
-	echo "Partition '$BOOTPART' not found. Falling back to SD card."
+	echo "Partition \"$BOOTPART\" not found. Falling back to SD card."
 	read -r -p "Press ENTER to continue."
 	exec /sbin/init
 fi
 
 # Check if partition is encrypted
 if blkid | grep "$BOOTPART" | grep "crypto_LUKS"; then
-	echo "Attempting to mount encrypted partition '$BOOTPART'."
+	echo "Attempting to mount encrypted partition \"$BOOTPART\"."
 	while :
 	do
 		/sbin/cryptsetup luksOpen "$BOOTPART" cryptroot && break
@@ -48,7 +49,7 @@ if blkid | grep "$BOOTPART" | grep "crypto_LUKS"; then
 fi
 
 # Mount
-echo "Trying to boot from partition '$BOOTPART'."
+echo "Trying to boot from partition \"$BOOTPART\"."
 if ! /bin/mount "$BOOTPART" "/mnt"; then
 	echo "Could not mount '$BOOTPART'. Falling back to SD card."
 	read -r -p "Press ENTER to continue."
@@ -63,8 +64,7 @@ if [ ! -e /mnt/sbin/init ]; then
 	exec /sbin/init
 fi
 
-# move root mount over to encrypted drive
+# Move root mount over to encrypted drive
 cd /mnt || exit 9
 mount --move . /
 exec chroot . /sbin/init
-
diff --git a/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-chat b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-chat
new file mode 100755
index 0000000000000000000000000000000000000000..16a8991df8bf2d897a89c596d90b1a1c0852527a
--- /dev/null
+++ b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-chat
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+irc -c '#mnt-reform' -p 6697 reform$RANDOM SSLIRC/irc.libera.chat
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-compstat.py b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-compstat.py
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-compstat.py
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-compstat.py
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-compstat.sh b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-compstat.sh
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-compstat.sh
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-compstat.sh
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-connman-gtk.sh b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-connman-gtk.sh
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-connman-gtk.sh
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-connman-gtk.sh
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-desktop-help b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-desktop-help
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-desktop-help
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-desktop-help
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-help b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-help
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-help
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-help
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-pavucontrol.sh b/reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-pavucontrol.sh
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/bin/reform-pavucontrol.sh
rename to reform2-imx8mq/reform-tools_1.0-7/usr/bin/reform-pavucontrol.sh
diff --git a/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-boot-config b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-boot-config
new file mode 100755
index 0000000000000000000000000000000000000000..5010d385fd0ac4d76a220a440ffb5eba191f6d07
--- /dev/null
+++ b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-boot-config
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+if [ "$EUID" -ne 0 ]
+  then echo "reform-boot-config has to be run as root / using sudo."
+  exit
+fi
+
+echo "This script selects your preferred boot medium. It writes your choice to the file /reform-boot-medium on the SD card (or eMMC). This file is interpreted by /sbin/reform-init at boot."
+echo "If the preferred boot medium is not available at boot time, reform-init will fall back to booting from the SD card (or eMMC)."
+echo
+
+BOOTPREF="$1"
+BOOTPART="mmcblk1p1"
+BOOTDISK="SD card"
+
+if [[ "--emmc" == "$1" ]]
+then
+    BOOTPREF="$2"
+    BOOTPART="mmcblk0p1"
+    BOOTDISK="eMMC"
+fi
+
+if [[ "$BOOTPREF" != "sd" && "$BOOTPREF" != "nvme" && "$BOOTPREF" != "usb" ]]
+then
+	echo "Usage: "
+	echo "  reform-boot-config sd              Boot from SD card or eMMC (default)."
+	echo "  reform-boot-config nvme            Boot from NVMe SSD (encrypted or plain)."
+	echo "  reform-boot-config usb             Boot from USB storage device (encrypted or plain)."
+	echo ""
+	echo "  reform-boot-config --emmc nvme|usb Record boot preference on eMMC instead of SD card."
+	echo "                                     This is only useful with SoM dip switch turned off."
+	exit 1
+fi
+
+MOUNTED_AT=$(mount | grep $BOOTPART | grep "on /" | cut -d ' ' -s -f 3)
+if [[ "x$MOUNTED_AT" != "x" ]]
+then
+	echo "Found $BOOTDISK mounted at $MOUNTED_AT."
+	echo "$BOOTPREF" > "${MOUNTED_AT}/reform-boot-medium"
+	echo "Boot medium choice $BOOTPREF recorded in ${MOUNTED_AT}/reform-boot-medium."
+	echo "Restart MNT Reform (type: reboot) after saving your work to activate the changes."
+	exit
+fi
+
+echo "Assuming your system is not running from $BOOTDISK. Mounting /dev/$BOOTPART on /boot."
+
+mount /dev/$BOOTPART /boot
+
+if [ $? -eq 0 ]
+then
+	echo "$BOOTPREF" > "/boot/reform-boot-medium"
+	echo "Boot medium choice $BOOTPREF recorded in /reform-boot-medium on $BOOTPART."
+	echo "Restart MNT Reform (type: reboot) after saving your work to activate the changes."
+	umount /boot
+	exit
+fi
+
+echo "Error: could not mount the SD card."
+
+umount /boot
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-config b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-config
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-config
rename to reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-config
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-display-config b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-display-config
similarity index 55%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-display-config
rename to reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-display-config
index 7385c92635e74ea5162e0404e440ecc08eb0afd3..e5d385e6c95b651ecf315181256b8be04e800493 100755
--- a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-display-config
+++ b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-display-config
@@ -9,8 +9,18 @@ fi
 
 DTB="x"
 DTB_TARGET="imx8mq-mnt-reform2.dtb"
+CHOICE="$1"
+BOOTPART="mmcblk1p1"
+BOOTDISK="SD card"
 
-case "$1" in
+if [[ "--emmc" == "$1" ]]
+then
+    CHOICE="$2"
+    BOOTPART="mmcblk0p1"
+    BOOTDISK="eMMC"
+fi
+
+case "$CHOICE" in
 	dual) DTB="imx8mq-mnt-reform2-dual-display.dtb";;
 	single) DTB="imx8mq-mnt-reform2-single-display.dtb";;
 esac
@@ -18,12 +28,13 @@ esac
 if [[ "$DTB" == "x" ]]
 then
 	echo "Usage: "
-	echo "  reform-display-config dual      Select dual-display support (internal + HDMI)."
-	echo "  reform-display-config single    Select only internal display (turns off HDMI)."
+	echo "  reform-display-config dual                Select dual-display support (internal + HDMI)."
+	echo "  reform-display-config single              Select only internal display (turns off HDMI)."
+  echo "  reform-display-config --emmc dual|single  Record choice on eMMC."
 	exit
 fi
 
-MOUNTED_AT=$(mount | grep mmcblk1p1 | grep "on /" | cut -d ' ' -s -f 3)
+MOUNTED_AT=$(mount | grep $BOOTPART | grep "on /" | cut -d ' ' -s -f 3)
 if [[ "x$MOUNTED_AT" != "x" ]]
 then
 	if [[ -e "${MOUNTED_AT}/${DTB_TARGET}" ]] && [[ -e "${MOUNTED_AT}/${DTB}" ]]
@@ -34,17 +45,17 @@ then
 		exit
 	fi
 
-	echo "Error: the SD card is already mounted at $MOUNTED_AT, but the DTB files ($DTB_TARGET and $DTB) are not there."
+	echo "Error: the $BOOTDISK is already mounted at $MOUNTED_AT, but the DTB files ($DTB_TARGET and $DTB) are not there."
 	exit
 fi
 
-echo "Assuming boot files are on SD card, but your system is not. Mounting /dev/mmcblk1p1 on /boot."
+echo "Assuming boot files are on $BOOTDISK, but your system is not. Mounting /dev/$BOOTPART on /boot."
 
-mount /dev/mmcblk1p1 /boot
+mount /dev/$BOOTPART /boot
 
 if [[ -e "/boot/$DTB_TARGET" ]] && [[ -e "/boot/$DTB" ]]
 then
-	echo "Found source and target files in /boot."
+	echo "Found source and target files in the root directory of $BOOTPART."
 	cp -v "/boot/$DTB" "/boot/$DTB_TARGET"
 	echo "Restart MNT Reform (type: reboot) after saving your work to activate the changes."
 	umount /boot
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-hw-setup.sh b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-hw-setup.sh
similarity index 90%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-hw-setup.sh
rename to reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-hw-setup.sh
index b2dbc294010c269ac2da697574e60c2a8298febc..7abd2906574e1291d7db64082667bf141d2b878e 100755
--- a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-hw-setup.sh
+++ b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-hw-setup.sh
@@ -3,8 +3,7 @@
 # This switch in WM8960 needs to be on for the headset mic input to work
 amixer -c 0 sset 'Left Input Mixer Boost' on
 
-# Enable wakeup from suspend on all UARTS
+# Enable wakeup from suspend on all UARTs
 echo enabled > /sys/devices/platform/soc@0/30800000.bus/30860000.serial/tty/ttymxc0/power/wakeup
 echo enabled > /sys/devices/platform/soc@0/30800000.bus/30890000.serial/tty/ttymxc1/power/wakeup
 echo enabled > /sys/devices/platform/soc@0/30800000.bus/30880000.serial/tty/ttymxc2/power/wakeup
-
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-migrate b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-migrate
similarity index 93%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-migrate
rename to reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-migrate
index 83d81b897a959a0db8bc137258964565d83f2368..116c6355e68edf8f991e73259f50d4093353f384 100755
--- a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-migrate
+++ b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-migrate
@@ -35,7 +35,7 @@ if [ "$EUID" -ne 0 ]
   exit
 fi
 
-command -v "rsync" >/dev/null 2>&1 || { echo >&2 "'rsync' is needed. Please install 'rsync' (apt install rsync)."; exit 1; }
+command -v "rsync" >/dev/null 2>&1 || { echo >&2 "Please install \"rsync\" using: apt install rsync"; exit 1; }
 
 echo "Trying to mount $TARGET... (if this fails, format the disk/partition as explained above)"
 
@@ -62,5 +62,3 @@ echo "Files copied."
 umount /mnt
 
 echo "$TARGET unmounted."
-
-
diff --git a/reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-standby b/reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-standby
similarity index 100%
rename from reform2-imx8mq/reform-tools_1.0-6/usr/sbin/reform-standby
rename to reform2-imx8mq/reform-tools_1.0-7/usr/sbin/reform-standby
diff --git a/reform2-imx8mq/template-etc/motd b/reform2-imx8mq/template-etc/motd
index 863dd244f47a21c9ede602ee83f0290a4a88d116..0469d853d76a70a3b6df76f7ac1bf2acb178ef6d 100644
--- a/reform2-imx8mq/template-etc/motd
+++ b/reform2-imx8mq/template-etc/motd
@@ -3,7 +3,7 @@
     ▒       ▒       ▒
     ██▒     ██▒     ██▒                 Welcome to Debian GNU/Linux
     ████▒   ████▒   ████▒   ██████▒     on MNT Reform
-    ██████▒ ██████▒ ██████▒ ██████▒     System Image: 2021-03-04
+    ██████▒ ██████▒ ██████▒ ██████▒     System Image v2: 2021-06-08
     ███████████████████████████
     ███▒███████▒███████▒███████         https://mntre.com/reform
     ███  ▒█████  ▒█████  ▒█████         https://www.debian.org
@@ -11,4 +11,3 @@
              ▒█      ▒█      ▒█         ████████████████████████
 
 
-
diff --git a/reform2-imx8mq/template-etc/motd-rescue b/reform2-imx8mq/template-etc/motd-rescue
index 6f750f8d93f754680e393f79363111c6c132361b..4f9b02149b2578a0c7d755dff3ab8a30144ed825 100644
--- a/reform2-imx8mq/template-etc/motd-rescue
+++ b/reform2-imx8mq/template-etc/motd-rescue
@@ -3,7 +3,7 @@
     ▒       ▒       ▒
     ██▒     ██▒     ██▒                 Welcome to Debian GNU/Linux
     ████▒   ████▒   ████▒   ██████▒     on MNT Reform
-    ██████▒ ██████▒ ██████▒ ██████▒     System Image: 2021-03-04
+    ██████▒ ██████▒ ██████▒ ██████▒     System Image v2: 2021-06-08
     ███████████████████████████
     ███▒███████▒███████▒███████         https://mntre.com/reform
     ███  ▒█████  ▒█████  ▒█████         https://www.debian.org
diff --git a/reform2-imx8mq/template-etc/pulse/default.conf b/reform2-imx8mq/template-etc/pulse/default.conf
index 603aab13ce1cc59f5ae44784c6456e290fdb9166..9e36a155acead41cabb7af04702d9b99add8e02a 100644
--- a/reform2-imx8mq/template-etc/pulse/default.conf
+++ b/reform2-imx8mq/template-etc/pulse/default.conf
@@ -2,7 +2,7 @@
 auto-profiles = yes
 
 [Mapping stereo-out]
-device-strings = hw:0
+device-strings = hw:%f
 fallback = yes
 channel-map = left,right
 paths-output = analog-output analog-output-speaker analog-output-headphones
@@ -10,7 +10,7 @@ direction = output
 priority = 1
 
 [Mapping headset-mono-in]
-device-strings = hw:0
+device-strings = hw:%f
 fallback = yes
 channel-map = mono
 paths-input = analog-input-reform
@@ -21,4 +21,3 @@ priority = 1
 description = MNT Reform
 output-mappings = stereo-out
 input-mappings = headset-mono-in
-
diff --git a/reform2-imx8mq/template-etc/resolv.conf b/reform2-imx8mq/template-etc/resolv.conf
deleted file mode 100644
index cae093a833dbfe99c7ade2c81fc9500f482e649f..0000000000000000000000000000000000000000
--- a/reform2-imx8mq/template-etc/resolv.conf
+++ /dev/null
@@ -1 +0,0 @@
-nameserver 8.8.8.8
diff --git a/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2-hdmi.dts b/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2-hdmi.dts
index d2aace242801d4682d762c00a7b4e221f30a4b8c..35e71122044722de601c721869f51264bb2ce44f 100644
--- a/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2-hdmi.dts
+++ b/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2-hdmi.dts
@@ -131,12 +131,6 @@
 		};
 	};
 
-	pcie0_refclk: pcie0-refclk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <100000000>;
-	};
-
 	pcie1_refclk: pcie1-refclk {
 		compatible = "fixed-clock";
 		#clock-cells = <0>;
@@ -693,12 +687,16 @@
 	clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
 		<&clk IMX8MQ_CLK_PCIE1_AUX>,
 		<&clk IMX8MQ_CLK_PCIE1_PHY>,
-		<&pcie0_refclk>;
+		<&clk IMX8MQ_CLK_MON_CLK2_OUT>;
 
 	clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
 
 	assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
-		<&clk IMX8MQ_CLK_PCIE1_PHY>;
+		<&clk IMX8MQ_CLK_PCIE1_PHY>,
+		<&clk IMX8MQ_CLK_MON_CLK2_OUT>;
+	assigned-clock-rates = <250000000>,
+		<100000000>,
+		<100000000>;
 	assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
 		<&clk IMX8MQ_SYS2_PLL_100M>;
 
diff --git a/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2.dts b/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2.dts
index 2efe1cbd7bb48e7dd114359c76363690db2ba7f6..1d86e1d33dc3cfa4f6fff8f5988d1b5915a565fb 100644
--- a/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2.dts
+++ b/reform2-imx8mq/template-kernel/imx8mq-mnt-reform2.dts
@@ -131,12 +131,6 @@
 		};
 	};
 
-	pcie0_refclk: pcie0-refclk {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <100000000>;
-	};
-
 	pcie1_refclk: pcie1-refclk {
 		compatible = "fixed-clock";
 		#clock-cells = <0>;
@@ -661,12 +655,16 @@
 	clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
 		<&clk IMX8MQ_CLK_PCIE1_AUX>,
 		<&clk IMX8MQ_CLK_PCIE1_PHY>,
-		<&pcie0_refclk>;
+		<&clk IMX8MQ_CLK_MON_CLK2_OUT>;
 
 	clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
 
 	assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
-		<&clk IMX8MQ_CLK_PCIE1_PHY>;
+		<&clk IMX8MQ_CLK_PCIE1_PHY>,
+		<&clk IMX8MQ_CLK_MON_CLK2_OUT>;
+	assigned-clock-rates = <250000000>,
+		<100000000>,
+		<100000000>;
 	assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
 		<&clk IMX8MQ_SYS2_PLL_100M>;
 
diff --git a/reform2-imx8mq/template-kernel/kernel-config b/reform2-imx8mq/template-kernel/kernel-config
index c3f91444a75169bcd6f59d762da743559181cb41..91f8ae9f7a18c26c0534f9cad8b0676128be862c 100644
--- a/reform2-imx8mq/template-kernel/kernel-config
+++ b/reform2-imx8mq/template-kernel/kernel-config
@@ -1,12 +1,13 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 5.11.0-rc7 Kernel Configuration
+# Linux/arm64 5.12.0 Kernel Configuration
 #
-CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 10.2.1-1) 10.2.1 20201207"
+CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110"
 CONFIG_CC_IS_GCC=y
 CONFIG_GCC_VERSION=100201
-CONFIG_LD_VERSION=235010000
 CONFIG_CLANG_VERSION=0
+CONFIG_LD_IS_BFD=y
+CONFIG_LD_VERSION=23501
 CONFIG_LLD_VERSION=0
 CONFIG_CC_CAN_LINK=y
 CONFIG_CC_CAN_LINK_STATIC=y
@@ -224,6 +225,7 @@ CONFIG_BPF_JIT_DEFAULT_ON=y
 # CONFIG_BPF_PRELOAD is not set
 CONFIG_USERFAULTFD=y
 CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_KCMP=y
 CONFIG_RSEQ=y
 # CONFIG_DEBUG_RSEQ is not set
 # CONFIG_EMBEDDED is not set
@@ -239,7 +241,6 @@ CONFIG_PERF_EVENTS=y
 
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLUB_DEBUG=y
-# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
@@ -289,6 +290,7 @@ CONFIG_ARCH_PROC_KCORE_TEXT=y
 #
 # CONFIG_ARCH_ACTIONS is not set
 # CONFIG_ARCH_AGILEX is not set
+# CONFIG_ARCH_N5X is not set
 # CONFIG_ARCH_SUNXI is not set
 # CONFIG_ARCH_ALPINE is not set
 # CONFIG_ARCH_BCM2835 is not set
@@ -324,7 +326,6 @@ CONFIG_ARCH_MXC=y
 # CONFIG_ARCH_VEXPRESS is not set
 # CONFIG_ARCH_VISCONTI is not set
 # CONFIG_ARCH_XGENE is not set
-# CONFIG_ARCH_ZX is not set
 # CONFIG_ARCH_ZYNQMP is not set
 # end of Platform selection
 
@@ -367,6 +368,7 @@ CONFIG_QCOM_FALKOR_ERRATUM_1003=y
 CONFIG_QCOM_FALKOR_ERRATUM_1009=y
 CONFIG_QCOM_QDF2400_ERRATUM_0065=y
 CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
+CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
 CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
 # end of ARM errata workarounds via the alternatives framework
 
@@ -401,7 +403,6 @@ CONFIG_ARCH_SPARSEMEM_DEFAULT=y
 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
 CONFIG_HW_PERF_EVENTS=y
 CONFIG_SYS_SUPPORTS_HUGETLBFS=y
-CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
 CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
 CONFIG_PARAVIRT=y
@@ -410,6 +411,7 @@ CONFIG_KEXEC=y
 CONFIG_KEXEC_FILE=y
 # CONFIG_KEXEC_SIG is not set
 CONFIG_CRASH_DUMP=y
+CONFIG_TRANS_TABLE=y
 CONFIG_XEN_DOM0=y
 CONFIG_XEN=y
 CONFIG_FORCE_MAX_ZONEORDER=11
@@ -430,6 +432,7 @@ CONFIG_SETEND_EMULATION=y
 CONFIG_ARM64_HW_AFDBM=y
 CONFIG_ARM64_PAN=y
 CONFIG_AS_HAS_LDAPR=y
+CONFIG_AS_HAS_LSE_ATOMICS=y
 CONFIG_ARM64_LSE_ATOMICS=y
 CONFIG_ARM64_USE_LSE_ATOMICS=y
 CONFIG_ARM64_VHE=y
@@ -716,6 +719,9 @@ CONFIG_HAVE_ARCH_STACKLEAK=y
 CONFIG_HAVE_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR=y
 CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
+CONFIG_LTO_NONE=y
 CONFIG_HAVE_CONTEXT_TRACKING=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -723,6 +729,7 @@ CONFIG_HAVE_MOVE_PUD=y
 CONFIG_HAVE_MOVE_PMD=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
 CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
 CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
@@ -781,7 +788,6 @@ CONFIG_MODULE_SIG_SHA256=y
 CONFIG_MODULE_SIG_HASH="sha256"
 # CONFIG_MODULE_COMPRESS is not set
 # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
-# CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_TRIM_UNUSED_KSYMS is not set
 CONFIG_MODULES_TREE_LOOKUP=y
 CONFIG_BLOCK=y
@@ -933,7 +939,6 @@ CONFIG_GENERIC_EARLY_IOREMAP=y
 # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
 # CONFIG_IDLE_PAGE_TRACKING is not set
 CONFIG_ARCH_HAS_PTE_DEVMAP=y
-CONFIG_FRAME_VECTOR=y
 CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
 # CONFIG_PERCPU_STATS is not set
 # CONFIG_GUP_TEST is not set
@@ -1305,6 +1310,7 @@ CONFIG_NET_L3_MASTER_DEV=y
 # CONFIG_NET_NCSI is not set
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
 CONFIG_XPS=y
 CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_CLASSID=y
@@ -1428,7 +1434,6 @@ CONFIG_PCIEASPM_PERFORMANCE=y
 CONFIG_PCIE_PME=y
 CONFIG_PCIE_DPC=y
 CONFIG_PCIE_PTM=y
-CONFIG_PCIE_BW=y
 CONFIG_PCI_MSI=y
 CONFIG_PCI_MSI_IRQ_DOMAIN=y
 CONFIG_PCI_QUIRKS=y
@@ -1458,6 +1463,7 @@ CONFIG_PCI_HOST_GENERIC=y
 # CONFIG_PCIE_ALTERA is not set
 # CONFIG_PCI_HOST_THUNDER_PEM is not set
 # CONFIG_PCI_HOST_THUNDER_ECAM is not set
+# CONFIG_PCIE_MICROCHIP_HOST is not set
 
 #
 # DesignWare PCI Core Support
@@ -1498,6 +1504,7 @@ CONFIG_PCI_IMX6=y
 # CONFIG_PCI_SW_SWITCHTEC is not set
 # end of PCI switch controller drivers
 
+# CONFIG_CXL_BUS is not set
 # CONFIG_PCCARD is not set
 # CONFIG_RAPIDIO is not set
 
@@ -1536,9 +1543,11 @@ CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_SPI=y
 CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
 # CONFIG_DMA_FENCE_TRACE is not set
 CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_ARCH_NUMA=y
 # end of Generic Driver Options
 
 #
@@ -1579,7 +1588,6 @@ CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_DRBD is not set
 # CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_SKD is not set
 # CONFIG_BLK_DEV_SX8 is not set
 # CONFIG_BLK_DEV_RAM is not set
 # CONFIG_CDROM_PKTCDVD is not set
@@ -1595,7 +1603,7 @@ CONFIG_VIRTIO_BLK=y
 CONFIG_NVME_CORE=y
 CONFIG_BLK_DEV_NVME=y
 CONFIG_NVME_MULTIPATH=y
-CONFIG_NVME_HWMON=y
+# CONFIG_NVME_HWMON is not set
 # CONFIG_NVME_FC is not set
 # CONFIG_NVME_TCP is not set
 # end of NVME Support
@@ -1652,6 +1660,7 @@ CONFIG_EEPROM_93CX6=y
 # CONFIG_ALTERA_STAPL is not set
 # CONFIG_GENWQE is not set
 # CONFIG_ECHO is not set
+# CONFIG_BCM_VK is not set
 # CONFIG_MISC_ALCOR_PCI is not set
 # CONFIG_MISC_RTSX_PCI is not set
 # CONFIG_MISC_RTSX_USB is not set
@@ -1726,7 +1735,6 @@ CONFIG_SCSI_LOWLEVEL=y
 # CONFIG_SCSI_SNIC is not set
 # CONFIG_SCSI_DMX3191D is not set
 # CONFIG_SCSI_FDOMAIN_PCI is not set
-# CONFIG_SCSI_GDTH is not set
 # CONFIG_SCSI_IPS is not set
 # CONFIG_SCSI_INITIO is not set
 # CONFIG_SCSI_INIA100 is not set
@@ -1846,7 +1854,6 @@ CONFIG_ETHERNET=y
 # CONFIG_NET_VENDOR_AQUANTIA is not set
 # CONFIG_NET_VENDOR_ARC is not set
 # CONFIG_NET_VENDOR_ATHEROS is not set
-# CONFIG_NET_VENDOR_AURORA is not set
 # CONFIG_NET_VENDOR_BROADCOM is not set
 # CONFIG_NET_VENDOR_BROCADE is not set
 # CONFIG_NET_VENDOR_CADENCE is not set
@@ -2110,6 +2117,7 @@ CONFIG_WLAN_VENDOR_MEDIATEK=y
 # CONFIG_MT7663U is not set
 # CONFIG_MT7663S is not set
 # CONFIG_MT7915E is not set
+# CONFIG_MT7921E is not set
 CONFIG_WLAN_VENDOR_MICROCHIP=y
 # CONFIG_WILC1000_SDIO is not set
 # CONFIG_WILC1000_SPI is not set
@@ -2298,7 +2306,6 @@ CONFIG_CONSOLE_POLL=y
 # CONFIG_SERIAL_BCM63XX is not set
 # CONFIG_SERIAL_ALTERA_JTAGUART is not set
 # CONFIG_SERIAL_ALTERA_UART is not set
-# CONFIG_SERIAL_IFX6X60 is not set
 # CONFIG_SERIAL_XILINX_PS_UART is not set
 # CONFIG_SERIAL_ARC is not set
 # CONFIG_SERIAL_RP2 is not set
@@ -2567,6 +2574,7 @@ CONFIG_GPIO_PCA953X_IRQ=y
 #
 # MFD GPIO expanders
 #
+# CONFIG_GPIO_WM8994 is not set
 # end of MFD GPIO expanders
 
 #
@@ -2635,6 +2643,7 @@ CONFIG_POWER_SUPPLY_HWMON=y
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_LT3651 is not set
+# CONFIG_CHARGER_LTC4162L is not set
 # CONFIG_CHARGER_DETECTOR_MAX14656 is not set
 # CONFIG_CHARGER_BQ2415X is not set
 # CONFIG_CHARGER_BQ24257 is not set
@@ -2642,6 +2651,7 @@ CONFIG_POWER_SUPPLY_HWMON=y
 # CONFIG_CHARGER_BQ2515X is not set
 # CONFIG_CHARGER_BQ25890 is not set
 # CONFIG_CHARGER_BQ25980 is not set
+# CONFIG_CHARGER_BQ256XX is not set
 # CONFIG_CHARGER_SMB347 is not set
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
 # CONFIG_CHARGER_RT9455 is not set
@@ -2669,6 +2679,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_ADT7462 is not set
 # CONFIG_SENSORS_ADT7470 is not set
 # CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_AHT10 is not set
 # CONFIG_SENSORS_AS370 is not set
 # CONFIG_SENSORS_ASC7621 is not set
 # CONFIG_SENSORS_AXI_FAN_CONTROL is not set
@@ -2720,6 +2731,7 @@ CONFIG_HWMON=y
 # CONFIG_SENSORS_MAX31790 is not set
 # CONFIG_SENSORS_MCP3021 is not set
 # CONFIG_SENSORS_TC654 is not set
+# CONFIG_SENSORS_TPS23861 is not set
 # CONFIG_SENSORS_MR75203 is not set
 # CONFIG_SENSORS_ADCXX is not set
 # CONFIG_SENSORS_LM63 is not set
@@ -2883,6 +2895,7 @@ CONFIG_BCMA_HOST_PCI_POSSIBLE=y
 #
 # Multifunction device drivers
 #
+CONFIG_MFD_CORE=y
 # CONFIG_MFD_ACT8945A is not set
 # CONFIG_MFD_AS3711 is not set
 # CONFIG_MFD_AS3722 is not set
@@ -2982,7 +2995,7 @@ CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_WM831X_I2C is not set
 # CONFIG_MFD_WM831X_SPI is not set
 # CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8994 is not set
+CONFIG_MFD_WM8994=y
 # CONFIG_MFD_ROHM_BD718XX is not set
 # CONFIG_MFD_ROHM_BD70528 is not set
 # CONFIG_MFD_ROHM_BD71828 is not set
@@ -3048,6 +3061,7 @@ CONFIG_REGULATOR_PWM=y
 # CONFIG_REGULATOR_TPS65132 is not set
 # CONFIG_REGULATOR_TPS6524X is not set
 CONFIG_REGULATOR_VCTRL=y
+# CONFIG_REGULATOR_WM8994 is not set
 # CONFIG_RC_CORE is not set
 CONFIG_CEC_CORE=y
 CONFIG_CEC_NOTIFIER=y
@@ -3371,6 +3385,7 @@ CONFIG_MEDIA_ATTACH=y
 # CONFIG_VIDEO_IMX274 is not set
 # CONFIG_VIDEO_IMX290 is not set
 # CONFIG_VIDEO_IMX319 is not set
+# CONFIG_VIDEO_IMX334 is not set
 # CONFIG_VIDEO_IMX355 is not set
 # CONFIG_VIDEO_OV02A10 is not set
 # CONFIG_VIDEO_OV2640 is not set
@@ -3380,6 +3395,7 @@ CONFIG_MEDIA_ATTACH=y
 # CONFIG_VIDEO_OV5640 is not set
 # CONFIG_VIDEO_OV5645 is not set
 # CONFIG_VIDEO_OV5647 is not set
+# CONFIG_VIDEO_OV5648 is not set
 # CONFIG_VIDEO_OV6650 is not set
 # CONFIG_VIDEO_OV5670 is not set
 # CONFIG_VIDEO_OV5675 is not set
@@ -3390,6 +3406,7 @@ CONFIG_MEDIA_ATTACH=y
 # CONFIG_VIDEO_OV7670 is not set
 # CONFIG_VIDEO_OV7740 is not set
 # CONFIG_VIDEO_OV8856 is not set
+# CONFIG_VIDEO_OV8865 is not set
 # CONFIG_VIDEO_OV9640 is not set
 # CONFIG_VIDEO_OV9650 is not set
 # CONFIG_VIDEO_OV13858 is not set
@@ -3407,6 +3424,7 @@ CONFIG_MEDIA_ATTACH=y
 # CONFIG_VIDEO_NOON010PC30 is not set
 # CONFIG_VIDEO_M5MOLS is not set
 # CONFIG_VIDEO_RDACM20 is not set
+# CONFIG_VIDEO_RDACM21 is not set
 # CONFIG_VIDEO_RJ54N1 is not set
 # CONFIG_VIDEO_S5K6AA is not set
 # CONFIG_VIDEO_S5K6A3 is not set
@@ -3602,6 +3620,7 @@ CONFIG_MEDIA_TUNER_MC44S803=y
 # CONFIG_DVB_AU8522_DTV is not set
 # CONFIG_DVB_AU8522_V4L is not set
 # CONFIG_DVB_S5H1411 is not set
+# CONFIG_DVB_MXL692 is not set
 
 #
 # ISDB-T (terrestrial) frontends
@@ -3721,6 +3740,7 @@ CONFIG_DRM_PANEL=y
 # CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596 is not set
 # CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
 # CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set
+# CONFIG_DRM_PANEL_DSI_CM is not set
 CONFIG_DRM_PANEL_LVDS=y
 CONFIG_DRM_PANEL_SIMPLE=y
 # CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
@@ -3730,6 +3750,7 @@ CONFIG_DRM_PANEL_SIMPLE=y
 # CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
 # CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
 # CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
+# CONFIG_DRM_PANEL_KHADAS_TS050 is not set
 # CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04 is not set
 # CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W is not set
 # CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829 is not set
@@ -4069,7 +4090,6 @@ CONFIG_SND_SOC_IMX_HDMI=y
 # CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set
 # CONFIG_SND_SOC_XILINX_SPDIF is not set
 # CONFIG_SND_SOC_XTFPGA_I2S is not set
-# CONFIG_ZX_TDM is not set
 CONFIG_SND_SOC_I2C_AND_SPI=y
 
 #
@@ -4151,10 +4171,10 @@ CONFIG_SND_SOC_HDMI_CODEC=y
 # CONFIG_SND_SOC_RK3328 is not set
 # CONFIG_SND_SOC_RT5616 is not set
 # CONFIG_SND_SOC_RT5631 is not set
+# CONFIG_SND_SOC_RT5659 is not set
 # CONFIG_SND_SOC_SGTL5000 is not set
 # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
 # CONFIG_SND_SOC_SIMPLE_MUX is not set
-# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
 # CONFIG_SND_SOC_SPDIF is not set
 # CONFIG_SND_SOC_SSM2305 is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
@@ -4221,6 +4241,8 @@ CONFIG_SND_SOC_WM8960=y
 # CONFIG_SND_SOC_TPA6130A2 is not set
 # CONFIG_SND_SOC_LPASS_WSA_MACRO is not set
 # CONFIG_SND_SOC_LPASS_VA_MACRO is not set
+# CONFIG_SND_SOC_LPASS_RX_MACRO is not set
+# CONFIG_SND_SOC_LPASS_TX_MACRO is not set
 # end of CODEC drivers
 
 CONFIG_SND_SIMPLE_CARD_UTILS=y
@@ -4309,6 +4331,7 @@ CONFIG_HID_MICROSOFT=y
 # CONFIG_HID_PETALYNX is not set
 # CONFIG_HID_PICOLCD is not set
 # CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PLAYSTATION is not set
 # CONFIG_HID_PRIMAX is not set
 # CONFIG_HID_RETRODE is not set
 # CONFIG_HID_ROCCAT is not set
@@ -4350,7 +4373,8 @@ CONFIG_USB_HIDDEV=y
 #
 # I2C HID support
 #
-# CONFIG_I2C_HID is not set
+# CONFIG_I2C_HID_OF is not set
+# CONFIG_I2C_HID_OF_GOODIX is not set
 # end of I2C HID support
 # end of HID support
 
@@ -4447,7 +4471,7 @@ CONFIG_USB_UAS=y
 # CONFIG_USB_MDC800 is not set
 # CONFIG_USB_MICROTEK is not set
 # CONFIG_USBIP_CORE is not set
-# CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_CDNS_SUPPORT is not set
 # CONFIG_USB_MUSB_HDRC is not set
 CONFIG_USB_DWC3=y
 # CONFIG_USB_DWC3_ULPI is not set
@@ -4458,6 +4482,7 @@ CONFIG_USB_DWC3_HOST=y
 #
 # CONFIG_USB_DWC3_HAPS is not set
 # CONFIG_USB_DWC3_OF_SIMPLE is not set
+# CONFIG_USB_DWC3_IMX8MP is not set
 # CONFIG_USB_DWC2 is not set
 # CONFIG_USB_CHIPIDEA is not set
 # CONFIG_USB_ISP1760 is not set
@@ -4517,6 +4542,7 @@ CONFIG_USB_SERIAL_PL2303=y
 # CONFIG_USB_SERIAL_SSU100 is not set
 # CONFIG_USB_SERIAL_QT2 is not set
 # CONFIG_USB_SERIAL_UPD78F0730 is not set
+# CONFIG_USB_SERIAL_XR is not set
 # CONFIG_USB_SERIAL_DEBUG is not set
 
 #
@@ -4682,6 +4708,12 @@ CONFIG_LEDS_TRIGGERS=y
 # CONFIG_LEDS_TRIGGER_NETDEV is not set
 # CONFIG_LEDS_TRIGGER_PATTERN is not set
 # CONFIG_LEDS_TRIGGER_AUDIO is not set
+# CONFIG_LEDS_TRIGGER_TTY is not set
+
+#
+# LED Blink
+#
+# CONFIG_LEDS_BLINK is not set
 # CONFIG_ACCESSIBILITY is not set
 # CONFIG_INFINIBAND is not set
 CONFIG_EDAC_SUPPORT=y
@@ -4850,6 +4882,7 @@ CONFIG_SYNC_FILE=y
 # CONFIG_SW_SYNC is not set
 # CONFIG_UDMABUF is not set
 # CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_DEBUG is not set
 # CONFIG_DMABUF_SELFTESTS is not set
 CONFIG_DMABUF_HEAPS=y
 CONFIG_DMABUF_HEAPS_SYSTEM=y
@@ -4861,6 +4894,7 @@ CONFIG_DMABUF_HEAPS_CMA=y
 # CONFIG_VFIO is not set
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI_LIB=y
 CONFIG_VIRTIO_MENU=y
 CONFIG_VIRTIO_PCI=y
 CONFIG_VIRTIO_PCI_LEGACY=y
@@ -4911,6 +4945,7 @@ CONFIG_STAGING=y
 CONFIG_STAGING_MEDIA=y
 CONFIG_VIDEO_HANTRO=y
 CONFIG_VIDEO_HANTRO_IMX8M=y
+# CONFIG_VIDEO_IMX_MEDIA is not set
 # CONFIG_VIDEO_ZORAN is not set
 
 #
@@ -4954,6 +4989,7 @@ CONFIG_COMMON_CLK=y
 # CONFIG_COMMON_CLK_CDCE706 is not set
 # CONFIG_COMMON_CLK_CDCE925 is not set
 # CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_AXI_CLKGEN is not set
 # CONFIG_COMMON_CLK_XGENE is not set
 # CONFIG_COMMON_CLK_PWM is not set
 # CONFIG_COMMON_CLK_VC5 is not set
@@ -4963,6 +4999,7 @@ CONFIG_MXC_CLK=y
 # CONFIG_CLK_IMX8MN is not set
 # CONFIG_CLK_IMX8MP is not set
 CONFIG_CLK_IMX8MQ=y
+# CONFIG_XILINX_VCU is not set
 CONFIG_HWSPINLOCK=y
 
 #
@@ -5074,7 +5111,6 @@ CONFIG_SOC_IMX8M=y
 #
 # Xilinx SoC drivers
 #
-# CONFIG_XILINX_VCU is not set
 # end of Xilinx SoC drivers
 # end of SOC (System On Chip) specific Drivers
 
@@ -5141,7 +5177,6 @@ CONFIG_RESET_IMX7=y
 CONFIG_GENERIC_PHY=y
 CONFIG_GENERIC_PHY_MIPI_DPHY=y
 # CONFIG_PHY_XGENE is not set
-# CONFIG_USB_LGM_PHY is not set
 # CONFIG_BCM_KONA_USB2_PHY is not set
 # CONFIG_PHY_CADENCE_TORRENT is not set
 # CONFIG_PHY_CADENCE_DPHY is not set
@@ -5160,6 +5195,7 @@ CONFIG_PHY_MIXEL_MIPI_DPHY=y
 
 CONFIG_POWERCAP=y
 CONFIG_IDLE_INJECT=y
+# CONFIG_DTPM is not set
 # CONFIG_MCB is not set
 
 #
@@ -5194,6 +5230,7 @@ CONFIG_NVMEM_SYSFS=y
 # CONFIG_NVMEM_IMX_IIM is not set
 CONFIG_NVMEM_IMX_OCOTP=y
 # CONFIG_NVMEM_SNVS_LPGPR is not set
+# CONFIG_NVMEM_RMEM is not set
 
 #
 # HW tracing support
@@ -5611,17 +5648,13 @@ CONFIG_CRYPTO_GHASH=y
 # CONFIG_CRYPTO_MD4 is not set
 CONFIG_CRYPTO_MD5=y
 # CONFIG_CRYPTO_MICHAEL_MIC is not set
-# CONFIG_CRYPTO_RMD128 is not set
 # CONFIG_CRYPTO_RMD160 is not set
-# CONFIG_CRYPTO_RMD256 is not set
-# CONFIG_CRYPTO_RMD320 is not set
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA256=y
 # CONFIG_CRYPTO_SHA512 is not set
 CONFIG_CRYPTO_SHA3=y
 # CONFIG_CRYPTO_SM3 is not set
 CONFIG_CRYPTO_STREEBOG=y
-# CONFIG_CRYPTO_TGR192 is not set
 # CONFIG_CRYPTO_WP512 is not set
 
 #
@@ -5639,7 +5672,6 @@ CONFIG_CRYPTO_BLOWFISH_COMMON=y
 CONFIG_CRYPTO_DES=y
 # CONFIG_CRYPTO_FCRYPT is not set
 # CONFIG_CRYPTO_KHAZAD is not set
-# CONFIG_CRYPTO_SALSA20 is not set
 # CONFIG_CRYPTO_CHACHA20 is not set
 # CONFIG_CRYPTO_SEED is not set
 # CONFIG_CRYPTO_SERPENT is not set
@@ -5888,7 +5920,9 @@ CONFIG_DEBUG_INFO=y
 # CONFIG_DEBUG_INFO_REDUCED is not set
 # CONFIG_DEBUG_INFO_COMPRESSED is not set
 # CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
 # CONFIG_DEBUG_INFO_DWARF4 is not set
+# CONFIG_DEBUG_INFO_DWARF5 is not set
 # CONFIG_DEBUG_INFO_BTF is not set
 # CONFIG_GDB_SCRIPTS is not set
 CONFIG_FRAME_WARN=2048
@@ -5964,6 +5998,8 @@ CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y
 CONFIG_CC_HAS_KASAN_GENERIC=y
 CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
 # CONFIG_KASAN is not set
+CONFIG_HAVE_ARCH_KFENCE=y
+# CONFIG_KFENCE is not set
 # end of Memory Debugging
 
 # CONFIG_DEBUG_SHIRQ is not set
@@ -6017,6 +6053,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y
 # CONFIG_CSD_LOCK_WAIT_DEBUG is not set
 # end of Lock Debugging (spinlocks, mutexes, etc...)
 
+# CONFIG_DEBUG_IRQFLAGS is not set
 CONFIG_STACKTRACE=y
 # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
 # CONFIG_DEBUG_KOBJECT is not set
@@ -6091,6 +6128,7 @@ CONFIG_DYNAMIC_EVENTS=y
 CONFIG_PROBE_EVENTS=y
 # CONFIG_BPF_KPROBE_OVERRIDE is not set
 CONFIG_FTRACE_MCOUNT_RECORD=y
+CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y
 # CONFIG_SYNTH_EVENTS is not set
 # CONFIG_HIST_TRIGGERS is not set
 # CONFIG_TRACE_EVENT_INJECT is not set
diff --git a/reform2-imx8mq/template-kernel/patches/caam-revert-imx8m-soc-match.patch b/reform2-imx8mq/template-kernel/patches/caam-revert-imx8m-soc-match.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b54f3812b5e8511e1c46463099434fd8386e99e8
--- /dev/null
+++ b/reform2-imx8mq/template-kernel/patches/caam-revert-imx8m-soc-match.patch
@@ -0,0 +1,176 @@
+commit 3a379fc9c14b251805fa94e7cfe58cd1635feb5e
+Author: Lukas F. Hartmann <lukas@mntre.com>
+Date:   Mon Jun 7 23:30:28 2021 +0200
+
+    Revert "soc: imx8m: change to use platform driver"
+    
+    This reverts commit 7d981405d0fd3cfc0de052e4791f516235d8b858.
+
+diff --git a/drivers/soc/imx/soc-imx8m.c b/drivers/soc/imx/soc-imx8m.c
+index 071e14496e4..cc57a384d74 100644
+--- a/drivers/soc/imx/soc-imx8m.c
++++ b/drivers/soc/imx/soc-imx8m.c
+@@ -5,8 +5,6 @@
+ 
+ #include <linux/init.h>
+ #include <linux/io.h>
+-#include <linux/module.h>
+-#include <linux/nvmem-consumer.h>
+ #include <linux/of_address.h>
+ #include <linux/slab.h>
+ #include <linux/sys_soc.h>
+@@ -31,7 +29,7 @@
+ 
+ struct imx8_soc_data {
+ 	char *name;
+-	u32 (*soc_revision)(struct device *dev);
++	u32 (*soc_revision)(void);
+ };
+ 
+ static u64 soc_uid;
+@@ -52,7 +50,7 @@ static u32 imx8mq_soc_revision_from_atf(void)
+ static inline u32 imx8mq_soc_revision_from_atf(void) { return 0; };
+ #endif
+ 
+-static u32 __init imx8mq_soc_revision(struct device *dev)
++static u32 __init imx8mq_soc_revision(void)
+ {
+ 	struct device_node *np;
+ 	void __iomem *ocotp_base;
+@@ -77,20 +75,9 @@ static u32 __init imx8mq_soc_revision(struct device *dev)
+ 			rev = REV_B1;
+ 	}
+ 
+-	if (dev) {
+-		int ret;
+-
+-		ret = nvmem_cell_read_u64(dev, "soc_unique_id", &soc_uid);
+-		if (ret) {
+-			iounmap(ocotp_base);
+-			of_node_put(np);
+-			return ret;
+-		}
+-	} else {
+-		soc_uid = readl_relaxed(ocotp_base + OCOTP_UID_HIGH);
+-		soc_uid <<= 32;
+-		soc_uid |= readl_relaxed(ocotp_base + OCOTP_UID_LOW);
+-	}
++	soc_uid = readl_relaxed(ocotp_base + OCOTP_UID_HIGH);
++	soc_uid <<= 32;
++	soc_uid |= readl_relaxed(ocotp_base + OCOTP_UID_LOW);
+ 
+ 	iounmap(ocotp_base);
+ 	of_node_put(np);
+@@ -120,7 +107,7 @@ static void __init imx8mm_soc_uid(void)
+ 	of_node_put(np);
+ }
+ 
+-static u32 __init imx8mm_soc_revision(struct device *dev)
++static u32 __init imx8mm_soc_revision(void)
+ {
+ 	struct device_node *np;
+ 	void __iomem *anatop_base;
+@@ -138,15 +125,7 @@ static u32 __init imx8mm_soc_revision(struct device *dev)
+ 	iounmap(anatop_base);
+ 	of_node_put(np);
+ 
+-	if (dev) {
+-		int ret;
+-
+-		ret = nvmem_cell_read_u64(dev, "soc_unique_id", &soc_uid);
+-		if (ret)
+-			return ret;
+-	} else {
+-		imx8mm_soc_uid();
+-	}
++	imx8mm_soc_uid();
+ 
+ 	return rev;
+ }
+@@ -171,7 +150,7 @@ static const struct imx8_soc_data imx8mp_soc_data = {
+ 	.soc_revision = imx8mm_soc_revision,
+ };
+ 
+-static __maybe_unused const struct of_device_id imx8_machine_match[] = {
++static __maybe_unused const struct of_device_id imx8_soc_match[] = {
+ 	{ .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, },
+ 	{ .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, },
+ 	{ .compatible = "fsl,imx8mn", .data = &imx8mn_soc_data, },
+@@ -179,20 +158,12 @@ static __maybe_unused const struct of_device_id imx8_machine_match[] = {
+ 	{ }
+ };
+ 
+-static __maybe_unused const struct of_device_id imx8_soc_match[] = {
+-	{ .compatible = "fsl,imx8mq-soc", .data = &imx8mq_soc_data, },
+-	{ .compatible = "fsl,imx8mm-soc", .data = &imx8mm_soc_data, },
+-	{ .compatible = "fsl,imx8mn-soc", .data = &imx8mn_soc_data, },
+-	{ .compatible = "fsl,imx8mp-soc", .data = &imx8mp_soc_data, },
+-	{ }
+-};
+-
+ #define imx8_revision(soc_rev) \
+ 	soc_rev ? \
+ 	kasprintf(GFP_KERNEL, "%d.%d", (soc_rev >> 4) & 0xf,  soc_rev & 0xf) : \
+ 	"unknown"
+ 
+-static int imx8_soc_info(struct platform_device *pdev)
++static int __init imx8_soc_init(void)
+ {
+ 	struct soc_device_attribute *soc_dev_attr;
+ 	struct soc_device *soc_dev;
+@@ -211,10 +182,7 @@ static int imx8_soc_info(struct platform_device *pdev)
+ 	if (ret)
+ 		goto free_soc;
+ 
+-	if (pdev)
+-		id = of_match_node(imx8_soc_match, pdev->dev.of_node);
+-	else
+-		id = of_match_node(imx8_machine_match, of_root);
++	id = of_match_node(imx8_soc_match, of_root);
+ 	if (!id) {
+ 		ret = -ENODEV;
+ 		goto free_soc;
+@@ -223,16 +191,8 @@ static int imx8_soc_info(struct platform_device *pdev)
+ 	data = id->data;
+ 	if (data) {
+ 		soc_dev_attr->soc_id = data->name;
+-		if (data->soc_revision) {
+-			if (pdev) {
+-				soc_rev = data->soc_revision(&pdev->dev);
+-				ret = soc_rev;
+-				if (ret < 0)
+-					goto free_soc;
+-			} else {
+-				soc_rev = data->soc_revision(NULL);
+-			}
+-		}
++		if (data->soc_revision)
++			soc_rev = data->soc_revision();
+ 	}
+ 
+ 	soc_dev_attr->revision = imx8_revision(soc_rev);
+@@ -270,24 +230,4 @@ static int imx8_soc_info(struct platform_device *pdev)
+ 	kfree(soc_dev_attr);
+ 	return ret;
+ }
+-
+-/* Retain device_initcall is for backward compatibility with DTS. */
+-static int __init imx8_soc_init(void)
+-{
+-	if (of_find_matching_node_and_match(NULL, imx8_soc_match, NULL))
+-		return 0;
+-
+-	return imx8_soc_info(NULL);
+-}
+ device_initcall(imx8_soc_init);
+-
+-static struct platform_driver imx8_soc_info_driver = {
+-	.probe = imx8_soc_info,
+-	.driver = {
+-		.name = "imx8_soc_info",
+-		.of_match_table = imx8_soc_match,
+-	},
+-};
+-
+-module_platform_driver(imx8_soc_info_driver);
+-MODULE_LICENSE("GPL v2");
diff --git a/reform2-imx8mq/template-kernel/patches/caam-revert-swiotlb-origaddr.patch b/reform2-imx8mq/template-kernel/patches/caam-revert-swiotlb-origaddr.patch
new file mode 100644
index 0000000000000000000000000000000000000000..772f66472b6b390f207d36f0bad8602a7f15e256
--- /dev/null
+++ b/reform2-imx8mq/template-kernel/patches/caam-revert-swiotlb-origaddr.patch
@@ -0,0 +1,20 @@
+commit 7c61e7a9318a9d506440d276748d2cdc05e07298
+Author: Lukas F. Hartmann <lukas@mntre.com>
+Date:   Tue Jun 8 03:08:20 2021 +0200
+
+    Revert "swiotlb: don't modify orig_addr in swiotlb_tbl_sync_single"
+    
+    This reverts commit 16fc3cef33a04632ab6b31758abdd77563a20759.
+
+diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
+index c10e855a03b..a817dc5537b 100644
+--- a/kernel/dma/swiotlb.c
++++ b/kernel/dma/swiotlb.c
+@@ -726,6 +726,7 @@ void swiotlb_tbl_sync_single(struct device *hwdev, phys_addr_t tlb_addr,
+ 
+ 	if (orig_addr == INVALID_PHYS_ADDR)
+ 		return;
++	orig_addr += (unsigned long)tlb_addr & (IO_TLB_SIZE - 1);
+ 
+ 	validate_sync_size_and_truncate(hwdev, orig_size, &size);
+ 
diff --git a/reform2-imx8mq/template-kernel/patches/mnt3006-MNT-Reform-imx8mq-add-PHY_27M-clock-missing-define.patch b/reform2-imx8mq/template-kernel/patches/mnt3006-MNT-Reform-imx8mq-add-PHY_27M-clock-missing-define.patch
index 0748274b813934c2412a48e36d044c3ddb2dfc0d..db640f1ad0c7cd88bb16fb399fc06e85876c9f73 100644
--- a/reform2-imx8mq/template-kernel/patches/mnt3006-MNT-Reform-imx8mq-add-PHY_27M-clock-missing-define.patch
+++ b/reform2-imx8mq/template-kernel/patches/mnt3006-MNT-Reform-imx8mq-add-PHY_27M-clock-missing-define.patch
@@ -1,27 +1,20 @@
-From 5bbfbc478adc68ae7e9fb1d5b0239d3ba93c8471 Mon Sep 17 00:00:00 2001
-From: mntmn <lukas@mntmn.com>
-Date: Thu, 28 May 2020 23:22:18 +0200
-Subject: [PATCH] MNT Reform: imx8mq: add PHY_27M clock: missing define
+commit 4db354f81d9b02ce3a978ec1238d228e1c4a5ad4
+Author: Lukas F. Hartmann <lukas@mntre.com>
+Date:   Mon Jun 7 15:22:58 2021 +0200
 
----
- include/dt-bindings/clock/imx8mq-clock.h | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
+    [PATCH] MNT Reform: imx8mq: add PHY_27M clock: missing define
 
 diff --git a/include/dt-bindings/clock/imx8mq-clock.h b/include/dt-bindings/clock/imx8mq-clock.h
-index 9b8045d75b8b..29b86c579b40 100644
+index 82e907ce7..d7b8ada86 100644
 --- a/include/dt-bindings/clock/imx8mq-clock.h
 +++ b/include/dt-bindings/clock/imx8mq-clock.h
-@@ -431,6 +431,9 @@
+@@ -445,6 +445,8 @@
+ #define IMX8MQ_CLK_MON_SEL			301
+ #define IMX8MQ_CLK_MON_CLK2_OUT			302
  
- #define IMX8MQ_CLK_A53_CORE			289
- 
--#define IMX8MQ_CLK_END				290
-+#define IMX8MQ_CLK_PHY_27MHZ			290
-+
-+#define IMX8MQ_CLK_END				291
+-#define IMX8MQ_CLK_END				303
++#define IMX8MQ_CLK_PHY_27MHZ  303
 +
++#define IMX8MQ_CLK_END				304
  
  #endif /* __DT_BINDINGS_CLOCK_IMX8MQ_H */
--- 
-2.26.2
-
diff --git a/reform2-imx8mq/template-skel/.config/sway/config b/reform2-imx8mq/template-skel/.config/sway/config
index f8c94460cf1544a069a1a3dd113f43289a556894..f2c68329b3ea953adedb123f0e937f25f9d2bb48 100644
--- a/reform2-imx8mq/template-skel/.config/sway/config
+++ b/reform2-imx8mq/template-skel/.config/sway/config
@@ -64,6 +64,12 @@ exec swaybg -c "#000000"
 # Read `man 5 sway-input` for more information about this section.
 #
 
+# change to de if you have a QWERTZ keyboard, for example
+input * {
+	xkb_layout us
+	xkb_options compose:menu,level3:ralt_switch
+}
+
 default_border pixel 10
 hide_edge_borders both
 
@@ -256,15 +262,17 @@ for_window [app_id="xfce4-appfinder"] floating enable
 
 include @sysconfdir@/sway/config.d/*
 
+# fix up to 20 second startup time of GTK applications
+exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
+exec hash dbus-update-activation-environment 2>/dev/null && \
+     dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
+
 # waybar
 exec /usr/local/bin/waybar
 
 # autostart gnome settings daemon
 exec /usr/libexec/gsd-xsettings
 
-# uncomment to have umlauts etc. on right alt
-#input "1003:8258:MNT_Reform_Keyboard" xkb_layout us-german-umlaut
-
 # start a policykit agent
 exec lxpolkit
 
@@ -276,4 +284,3 @@ exec gsettings set org.gnome.gedit.preferences.editor scheme 'cobalt'
 
 # autostart a terminal
 exec xfce4-terminal -e 'bash -c "reform-desktop-help; bash"'
-