diff options
author | Milton D. Miller II <miltonm@us.ibm.com> | 2016-01-27 20:18:16 -0600 |
---|---|---|
committer | Milton D. Miller II <miltonm@us.ibm.com> | 2016-01-28 15:46:41 -0600 |
commit | 8084d744423576c7466ed773f5d73cb4a7b0d841 (patch) | |
tree | cba4f8f829bb04ba87cdd5dbcff0589025050a8c | |
parent | 6964081624ad44c462a94f20a19c57c93cb583e8 (diff) | |
download | talos-openbmc-8084d744423576c7466ed773f5d73cb4a7b0d841.tar.gz talos-openbmc-8084d744423576c7466ed773f5d73cb4a7b0d841.zip |
Hack to make fw_setenv work
The fw_setenv is not working with the kernel mtd driver. It works
on a plain flat file, and flashcp which is used in /update works.
Find the u-boot-env mtd, link it in run and copy the contents to a
plain file in /run during init. In shutdown, check for the link,
the file having data, no current image update for the u-boot-env,
and that the content differs from the mtd via the link. If all
are true create a symlink to the file and trigger the update.
Along wtih changing the fw_env.config this causes the fw_setenv
and fw_printenv utilities to set and update this cached file which
will be synced during a normal bmc reboot. This will allow us to
set the ethaddr variable which already requires a reboot to activate.
Note: the links are directly in /run because the fw_{set,print}env
utilities limit the env file name to 16 characters.
Signed-off-by: Milton Miller <miltonmm@us.ibm.com>
3 files changed, 14 insertions, 1 deletions
diff --git a/meta-openbmc-bsp/meta-aspeed/meta-ast2400/recipes-bsp/u-boot/files/fw_env.config b/meta-openbmc-bsp/meta-aspeed/meta-ast2400/recipes-bsp/u-boot/files/fw_env.config index fe09890c9..978e4d6e5 100644 --- a/meta-openbmc-bsp/meta-aspeed/meta-ast2400/recipes-bsp/u-boot/files/fw_env.config +++ b/meta-openbmc-bsp/meta-aspeed/meta-ast2400/recipes-bsp/u-boot/files/fw_env.config @@ -12,7 +12,8 @@ # MTD SPI-dataflash example # MTD device name Device offset Env. size Flash sector size Number of sectors -/dev/mtd2 0x00000 0x20000 +#/dev/mtd2 0x00000 0x20000 +/run/fw_env 0x00000 0x20000 #/dev/mtd5 0x4200 0x4200 #/dev/mtd6 0x4200 0x4200 diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh index 431780a70..0dc4c35c6 100644 --- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh +++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh @@ -29,6 +29,13 @@ findmtd() { echo $m } +env=$(findmtd u-boot-env) +if test -n $env +then + ln -s /dev/$env /run/mtd:u-boot-env + cp /run/mtd:u-boot-env /run/fw_env +fi + rofs=$(findmtd rofs) rwfs=$(findmtd rwfs) diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh index 029cd6556..cc076fdc0 100644 --- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh +++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh @@ -24,6 +24,11 @@ do done set +x +if test -s /run/fw_env -a -c /run/mtd:u-boot-env -a ! -e /image-u-boot-env && + ! cmp /run/mtd:u-boot-env /run/fw_env +then + ln -s /run/fw_env /image-u-boot-env +fi if test -x /update && ls image-* > /dev/null 2>&1 then |