From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takahiro Akashi Date: Wed, 12 Dec 2018 10:42:56 +0900 Subject: [U-Boot] [PATCH] qemu-arm: Add persistent environment support In-Reply-To: References: <1543231217-18799-1-git-send-email-sumit.garg@linaro.org> Message-ID: <20181212014255.GK21466@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Dec 11, 2018 at 06:04:05PM +0530, Sumit Garg wrote: > On Mon, 26 Nov 2018 at 16:51, Sumit Garg wrote: > > > > Currently on qemu-arm platforms environment is kept in RAM. Instead > > use pflash device 1 to provide persistent environment support across > > device reset. > > > > Also (optionally) provide support for persistent environment across > > qemu machine OFF/ON using following instructions: > > > > - Create envstore.img using qemu-img: > > qemu-img create -f raw envstore.img 64M > > - Add a pflash drive parameter to the command line: > > -drive if=pflash,format=raw,index=1,file=envstore.img > > > > Signed-off-by: Sumit Garg > > --- > > configs/qemu_arm64_defconfig | 7 +++++++ > > configs/qemu_arm_defconfig | 7 +++++++ > > doc/README.qemu-arm | 6 ++++++ > > include/configs/qemu-arm.h | 8 +++++++- > > 4 files changed, 27 insertions(+), 1 deletion(-) > > > > Gentle reminder. Please let me know if you have any further comments. Another use case is atf + u-boot (although I don't know people are interested in it). Put bl1.bin in flash0(0x0-0x4000000) and put fip.bin in flash1(0x4000000-0x8000000). Please note that, with secure=on, flash0 is in secure and flash1 is in non-secure. While I admit that your patch is workable, my point is that there are different use cases and it may not be a good idea to put one configuration in qemu-arm.h. Thanks, -Takahiro Akashi > -Sumit > > > diff --git a/configs/qemu_arm64_defconfig b/configs/qemu_arm64_defconfig > > index f4502c9..0f13716 100644 > > --- a/configs/qemu_arm64_defconfig > > +++ b/configs/qemu_arm64_defconfig > > @@ -29,3 +29,10 @@ CONFIG_USB=y > > CONFIG_DM_USB=y > > CONFIG_USB_EHCI_HCD=y > > CONFIG_USB_EHCI_PCI=y > > +CONFIG_ENV_IS_IN_FLASH=y > > +CONFIG_MTD=y > > +CONFIG_MTD_NOR_FLASH=y > > +CONFIG_FLASH_CFI_DRIVER=y > > +CONFIG_CFI_FLASH=y > > +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y > > +CONFIG_SYS_FLASH_CFI=y > > diff --git a/configs/qemu_arm_defconfig b/configs/qemu_arm_defconfig > > index acebdc5..b75363e 100644 > > --- a/configs/qemu_arm_defconfig > > +++ b/configs/qemu_arm_defconfig > > @@ -29,3 +29,10 @@ CONFIG_USB=y > > CONFIG_DM_USB=y > > CONFIG_USB_EHCI_HCD=y > > CONFIG_USB_EHCI_PCI=y > > +CONFIG_ENV_IS_IN_FLASH=y > > +CONFIG_MTD=y > > +CONFIG_MTD_NOR_FLASH=y > > +CONFIG_FLASH_CFI_DRIVER=y > > +CONFIG_CFI_FLASH=y > > +CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y > > +CONFIG_SYS_FLASH_CFI=y > > diff --git a/doc/README.qemu-arm b/doc/README.qemu-arm > > index 2601656..e67bc13 100644 > > --- a/doc/README.qemu-arm > > +++ b/doc/README.qemu-arm > > @@ -47,6 +47,12 @@ The minimal QEMU command line to get U-Boot up and running is: > > Note that for some odd reason qemu-system-aarch64 needs to be explicitly > > told to use a 64-bit CPU or it will boot in 32-bit mode. > > > > +Additional persistent U-boot environment support can be added as follows: > > +- Create envstore.img using qemu-img: > > + qemu-img create -f raw envstore.img 64M > > +- Add a pflash drive parameter to the command line: > > + -drive if=pflash,format=raw,index=1,file=envstore.img > > + > > Additional peripherals that have been tested to work in both U-Boot and Linux > > can be enabled with the following command line parameters: > > > > diff --git a/include/configs/qemu-arm.h b/include/configs/qemu-arm.h > > index fedc466..83a930b 100644 > > --- a/include/configs/qemu-arm.h > > +++ b/include/configs/qemu-arm.h > > @@ -21,7 +21,8 @@ > > #define CONFIG_SYS_HZ 1000 > > > > /* Environment options */ > > -#define CONFIG_ENV_SIZE SZ_64K > > +#define CONFIG_ENV_ADDR 0x4000000 > > +#define CONFIG_ENV_SIZE SZ_256K > > > > #define BOOT_TARGET_DEVICES(func) \ > > func(SCSI, scsi, 0) \ > > @@ -42,4 +43,9 @@ > > > > #define CONFIG_SYS_CBSIZE 512 > > > > +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE > > +#define CONFIG_SYS_FLASH_BASE 0x0 > > +#define CONFIG_SYS_MAX_FLASH_BANKS 2 > > +#define CONFIG_SYS_MAX_FLASH_SECT 256 /* Sector: 256K, Bank: 64M */ > > + > > #endif /* __CONFIG_H */ > > -- > > 2.7.4 > >