Skip to content
Snippets Groups Projects
Select Git revision
  • 4f68ddf0d0d0da767cf9bf69cbcf9f3bd5b2edb9
  • v2018.2.x default
  • experimental
  • master
  • v2021.1.2-ffs
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.2.x
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2021.1.2-ffs0.2
  • v2021.1.2-ffs0.1
  • v2021.1.1-ffs0.4
  • v2021.1.1-ffs0.3
  • v2021.1.1-ffs0.2
  • v2021.1.1-ffs0.1
  • v2021.1-ffs0.1
  • v2020.2.3-ffs0.3
  • v2020.2.3-ffs0.2
  • v2020.2.3-ffs0.1
  • v2020.2.2-ffs0.1
  • v2020.2.1-ffs0.1
  • v2020.2-ffs0.1
  • v2020.2
  • v2020.2.x-ffs0.1
  • v2020.1.3-ffs0.1
  • v2020.1.1-ffs0.1
  • v2020.1-ffs0.1
  • v2019.1.2-ffs0.1
  • v2019.1.1-ffs0.1
42 results

0019-ipq40xx-Change-name-for-openmesh.sh-to-vendor-free-name.patch

Blame
  • Forked from firmware / FFS Gluon
    Source project has a limited visibility.
    0019-ipq40xx-Change-name-for-openmesh.sh-to-vendor-free-name.patch 10.21 KiB
    From: Sven Eckelmann <sven@narfation.org>
    Date: Sat, 21 Nov 2020 22:27:11 +0100
    Subject: ipq40xx: Change name for openmesh.sh to vendor-free name
    
    Other vendors are using functionality similar to the ones OpenMesh used to
    implement two areas on the flash to store the default image and a fallback
    image. So just change the name to dualboot_datachk.sh to avoid duplicated
    code just to have the same script for different vendors.
    
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Origin: backport, https://github.com/openwrt/openwrt/commit/8a891bfaa01d9592ea86c6b0cbbd5c04688c09f8
    
    diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh b/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh
    new file mode 100644
    index 0000000000000000000000000000000000000000..807a85d43ccd57642b52e7c1a7f92295cb6cd036
    --- /dev/null
    +++ b/target/linux/ipq40xx/base-files/lib/upgrade/dualboot_datachk.sh
    @@ -0,0 +1,106 @@
    +# The U-Boot loader with the datachk patchset for dualbooting requires image
    +# sizes and checksums to be provided in the U-Boot environment.
    +# The devices come with 2 main partitions - while one is active
    +# sysupgrade will flash the other. The boot order is changed to boot the
    +# newly flashed partition. If the new partition can't be booted due to
    +# upgrade failures the previously used partition is loaded.
    +
    +platform_do_upgrade_dualboot_datachk() {
    +	local tar_file="$1"
    +	local restore_backup
    +	local primary_kernel_mtd
    +
    +	local setenv_script="/tmp/fw_env_upgrade"
    +
    +	local kernel_mtd="$(find_mtd_index $PART_NAME)"
    +	local kernel_offset="$(cat /sys/class/mtd/mtd${kernel_mtd}/offset)"
    +	local total_size="$(cat /sys/class/mtd/mtd${kernel_mtd}/size)"
    +
    +	# detect to which flash region the new image is written to.
    +	#
    +	# 1. check what is the mtd index for the first flash region on this
    +	#    device
    +	# 2. check if the target partition ("inactive") has the mtd index of
    +	#    the first flash region
    +	#
    +	#    - when it is: the new bootseq will be 1,2 and the first region is
    +	#      modified
    +	#    - when it isnt: bootseq will be 2,1 and the second region is
    +	#      modified
    +	#
    +	# The detection has to be done via the hardcoded mtd partition because
    +	# the current boot might be done with the fallback region. Let us
    +	# assume that the current bootseq is 1,2. The bootloader detected that
    +	# the image in flash region 1 is corrupt and thus switches to flash
    +	# region 2. The bootseq in the u-boot-env is now still the same and
    +	# the sysupgrade code can now only rely on the actual mtd indexes and
    +	# not the bootseq variable to detect the currently booted flash
    +	# region/image.
    +	#
    +	# In the above example, an implementation which uses bootseq ("1,2") to
    +	# detect the currently booted image would assume that region 1 is booted
    +	# and then overwrite the variables for the wrong flash region (aka the
    +	# one which isn't modified). This could result in a device which doesn't
    +	# boot anymore to Linux until it was reflashed with ap51-flash.
    +	local next_boot_part="1"
    +	case "$(board_name)" in
    +	openmesh,a42)
    +		primary_kernel_mtd=8
    +		;;
    +	openmesh,a62)
    +		primary_kernel_mtd=10
    +		;;