diff --git a/debian/patches/apertis/0007-Add-flag-to-enable-disable-bootcount.patch b/debian/patches/apertis/0007-Add-flag-to-enable-disable-bootcount.patch
new file mode 100644
index 0000000000000000000000000000000000000000..54139f79f7e1eb9e2df2e1f32c84f82ef17672ff
--- /dev/null
+++ b/debian/patches/apertis/0007-Add-flag-to-enable-disable-bootcount.patch
@@ -0,0 +1,174 @@
+From cc9425b56bb428ba93c06e850f4e02f5e779509c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Danis?= <frederic.danis@collabora.com>
+Date: Wed, 4 Mar 2020 12:27:01 +0100
+Subject: [PATCH v2] bootcount_ext: Add flag to enable/disable bootcount
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+After a successful upgrade, multiple problem during boot sequence may
+trigger the altbootcmd process.
+This patch adds a version and an upgrade_available entries to the
+bootcount file to enable/disable the bootcount check.
+When failing to read the bootcount file it will consider that bootcount is
+enabled, acting as previously, and update the file accordingly.
+
+The bootcount file is only saved when `upgrade_available` is true, this
+allows to save writes to the filesystem.
+
+Signed-off-by: Frédéric Danis <frederic.danis@collabora.com>
+---
+ doc/README.bootcount              | 51 +++++++++++++++++++++++++++++++
+ drivers/bootcount/bootcount_ext.c | 46 ++++++++++++++++++++--------
+ 2 files changed, 85 insertions(+), 12 deletions(-)
+ create mode 100644 doc/README.bootcount
+
+diff --git a/doc/README.bootcount b/doc/README.bootcount
+new file mode 100644
+index 00000000..b1c22905
+--- /dev/null
++++ b/doc/README.bootcount
+@@ -0,0 +1,51 @@
++.. SPDX-License-Identifier: GPL-2.0+
++
++Boot Count Limit
++================
++
++This allows to detect multiple failed attempts to boot Linux.
++
++After a power-on reset, "bootcount" variable will be initialized with 1, and
++each reboot will increment the value by 1.
++
++If, after a reboot, the new value of "bootcount" exceeds the value of
++"bootlimit", then instead of the standard boot action (executing the contents of
++"bootcmd") an alternate boot action will be performed, and the contents of
++"altbootcmd" will be executed.
++
++If the variable "bootlimit" is not defined in the environment, the Boot Count
++Limit feature is disabled. If it is enabled, but "altbootcmd" is not defined,
++then U-Boot will drop into interactive mode and remain there.
++
++It is the responsibility of some application code (typically a Linux
++application) to reset the variable "bootcount", thus allowing for more boot
++cycles.
++
++BOOTCOUNT_EXT
++-------------
++
++This adds support for maintaining boot count in a file on an EXT filesystem.
++The file to use is define by:
++
++SYS_BOOTCOUNT_EXT_INTERFACE
++SYS_BOOTCOUNT_EXT_DEVPART
++SYS_BOOTCOUNT_EXT_NAME
++
++The format of the file is:
++
++==== =================
++type entry
++==== =================
++u8   magic
++u8   version
++u8   bootcount
++u8   upgrade_available
++==== =================
++
++To prevent unattended usage of "altbootcmd" the "upgrade_available" variable is
++used.
++If "upgrade_available" is 0, "bootcount" is not saved, if "upgrade_available" is
++1 "bootcount" is save.
++So the Userspace Application must set the "upgrade_available" and "bootcount"
++variables to 0, if a boot was successfully.
++This also prevents writes on all reboots.
+diff --git a/drivers/bootcount/bootcount_ext.c b/drivers/bootcount/bootcount_ext.c
+index 075e5908..9639e638 100644
+--- a/drivers/bootcount/bootcount_ext.c
++++ b/drivers/bootcount/bootcount_ext.c
+@@ -7,11 +7,21 @@
+ #include <fs.h>
+ #include <mapmem.h>
+ 
+-#define BC_MAGIC	0xbc
++#define BC_MAGIC	0xbd
++#define BC_VERSION	1
++
++typedef struct {
++	u8 magic;
++	u8 version;
++	u8 bootcount;
++	u8 upgrade_available;
++} bootcount_ext_t;
++
++static u8 upgrade_available = 1;
+ 
+ void bootcount_store(ulong a)
+ {
+-	u8 *buf;
++	bootcount_ext_t *buf;
+ 	loff_t len;
+ 	int ret;
+ 
+@@ -21,20 +31,27 @@ void bootcount_store(ulong a)
+ 		return;
+ 	}
+ 
+-	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, 2);
+-	buf[0] = BC_MAGIC;
+-	buf[1] = (a & 0xff);
++	/* Only update bootcount during upgrade process */
++	if (!upgrade_available)
++		return;
++
++	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, sizeof(bootcount_ext_t));
++	buf->magic = BC_MAGIC;
++	buf->version = BC_VERSION;
++	buf->bootcount = (a & 0xff);
++	buf->upgrade_available = upgrade_available;
+ 	unmap_sysmem(buf);
+ 
+ 	ret = fs_write(CONFIG_SYS_BOOTCOUNT_EXT_NAME,
+-		       CONFIG_SYS_BOOTCOUNT_ADDR, 0, 2, &len);
++		       CONFIG_SYS_BOOTCOUNT_ADDR, 0, sizeof(bootcount_ext_t),
++		       &len);
+ 	if (ret != 0)
+ 		puts("Error storing bootcount\n");
+ }
+ 
+ ulong bootcount_load(void)
+ {
+-	u8 *buf;
++	bootcount_ext_t *buf;
+ 	loff_t len_read;
+ 	int ret;
+ 
+@@ -45,15 +62,20 @@ ulong bootcount_load(void)
+ 	}
+ 
+ 	ret = fs_read(CONFIG_SYS_BOOTCOUNT_EXT_NAME, CONFIG_SYS_BOOTCOUNT_ADDR,
+-		      0, 2, &len_read);
+-	if (ret != 0 || len_read != 2) {
++		      0, sizeof(bootcount_ext_t), &len_read);
++	if (ret != 0 || len_read != sizeof(bootcount_ext_t)) {
+ 		puts("Error loading bootcount\n");
+ 		return 0;
+ 	}
+ 
+-	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, 2);
+-	if (buf[0] == BC_MAGIC)
+-		ret = buf[1];
++	buf = map_sysmem(CONFIG_SYS_BOOTCOUNT_ADDR, sizeof(bootcount_ext_t));
++	if (buf->magic == BC_MAGIC && buf->version == BC_VERSION) {
++		upgrade_available = buf->upgrade_available;
++		if (upgrade_available)
++			ret = buf->bootcount;
++	} else {
++		puts("Incorrect bootcount file\n");
++	}
+ 
+ 	unmap_sysmem(buf);
+ 
+-- 
+2.20.1
+
diff --git a/debian/patches/apertis/pstore/0001-Add-pstore-command.patch b/debian/patches/apertis/pstore/0001-Add-pstore-command.patch
index da47140d5ef19177acec80a9102e5c183ae708d2..126eb05ed80786769d402b162cffad515e1c04f5 100644
--- a/debian/patches/apertis/pstore/0001-Add-pstore-command.patch
+++ b/debian/patches/apertis/pstore/0001-Add-pstore-command.patch
@@ -114,12 +114,12 @@ diff --git a/cmd/Makefile b/cmd/Makefile
 index f1dd513a4b..06d7ad7375 100644
 --- a/cmd/Makefile
 +++ b/cmd/Makefile
-@@ -106,6 +106,7 @@ obj-$(CONFIG_CMD_PCI) += pci.o
+@@ -110,6 +110,7 @@ obj-$(CONFIG_CMD_PCI) += pci.o
  endif
- obj-y += pcmcia.o
  obj-$(CONFIG_CMD_PINMUX) += pinmux.o
+ obj-$(CONFIG_CMD_PMC) += pmc.o
 +obj-$(CONFIG_CMD_PSTORE) += pstore.o
- obj-$(CONFIG_CMD_PXE) += pxe.o
+ obj-$(CONFIG_CMD_PXE) += pxe.o pxe_utils.o
  obj-$(CONFIG_CMD_WOL) += wol.o
  obj-$(CONFIG_CMD_QFW) += qfw.o
 diff --git a/cmd/pstore.c b/cmd/pstore.c
diff --git a/debian/patches/series b/debian/patches/series
index bd3cb2bf72ae6b7bcef316d141f53c144795cc3f..1dffc6e8b4894ee1d9f192e82a1f52d8a33d219a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -30,6 +30,7 @@ pinebook-pro/0005-Add-initial-support-for-the-Pinebook-Pro-laptop-from.patch
 # https://patchwork.ozlabs.org/project/uboot/patch/20200420181825.935797-1-pbrobinson@gmail.com/
 pinebook-pro/0006-drivers-video-rockchip-fix-building-eDP-and-LVDS-dri.patch
 
+# Apertis patches
 apertis/pstore/0001-Add-pstore-command.patch
 apertis/pstore/0002-test-Add-PStore-command-tests.patch
 apertis/pstore/0003-Fixup-DT-to-pass-PStore-Ramoops-parameters.patch