Hi Michal, On Thu, 8 Aug 2024 at 23:39, Michal Simek <michal.si...@amd.com> wrote: > > Hi Simon, > > On 8/8/24 16:28, Simon Glass wrote: > > Hi Michal, > > > > On Wed, 7 Aug 2024 at 23:31, Michal Simek <michal.si...@amd.com> wrote: > >> > >> > >> > >> On 8/7/24 16:36, Simon Glass wrote: > >>> Hi Prasad, > >>> > >>> On Tue, 6 Aug 2024 at 23:05, Kummari, Prasad <prasad.kumm...@amd.com> > >>> wrote: > >>>> > >>>> Hi Glass, > >>>> > >>>>> -----Original Message----- > >>>>> From: Simon Glass <s...@chromium.org> > >>>>> Sent: Wednesday, August 7, 2024 3:21 AM > >>>>> To: Kummari, Prasad <prasad.kumm...@amd.com> > >>>>> Cc: u-boot@lists.denx.de; git (AMD-Xilinx) <g...@amd.com>; Simek, Michal > >>>>> <michal.si...@amd.com>; Abbarapu, Venkatesh > >>>>> <venkatesh.abbar...@amd.com>; g...@xilinx.com; > >>>>> ja...@amarulasolutions.com; n-fran...@ti.com; d-g...@ti.com > >>>>> Subject: Re: [PATCH] cmd: sf: prevent overwriting the reserved memory > >>>>> > >>>>> Caution: This message originated from an External Source. Use proper > >>>>> caution when opening attachments, clicking links, or responding. > >>>>> > >>>>> > >>>>> Hi Prasad, > >>>>> > >>>>> On Tue, 6 Aug 2024 at 06:08, Prasad Kummari <prasad.kumm...@amd.com> > >>>>> wrote: > >>>>>> > >>>>>> Added LMB API to prevent SF command from overwriting reserved memory > >>>>>> areas. The current SPI code does not use LMB APIs for loading data > >>>>>> into memory addresses. To resolve this, LMB APIs were added to check > >>>>>> the load address of an SF command and ensure it does not overwrite > >>>>>> reserved memory addresses. Similar checks are used in TFTP, serial > >>>>>> load, and boot code to prevent overwriting reserved memory. > >>>>> > >>>>> The SPI flash may be used to load other things, not just an OS. What is > >>>>> your > >>>>> use case or problem here? > >>>> > >>>> [Prasad]: We have observed that SF command can overwrite the reserved > >>>> area without throwing any errors or warnings. > >>>> This issue was noticed when the TF-A area is reserved in the Device > >>>> Tree at address 0xf000000. The sf command is > >>>> corrupting the reserved area, and U-Boot relocation address too. > >>>> > >>>> EX: TF-A reserved at ddr address 0xf000000 > >>>> > >>>> Versal NET> sf read 0x0f000000 0x0 0x100 ----> Overwriting > >>>> reserved area. > >>>> device 0 offset 0x0, size 0x100 > >>>> SF: 256 bytes @ 0x0 Read: OK > >>>> > >>>> U-boot relocation address relocaddr = 0x000000007fec2000 > >>>> > >>>> Versal NET> sf write 0x0000000077ec2000 0x0 0x100 --> > >>>> Overwriting reserved area. > >>>> device 0 offset 0x0, size 0x100 > >>>> SF: 256 bytes @ 0x0 Written: OK > >>> > >>> Yes. There are many things which can overwrite memory, e.g. the mw > >>> command. It is a boot loader so this is normal. > >>> > >>> What image are you loading here? > >> > >> In spi boot it can be Kernel/rootfs but at the end of day it doesn't > >> really matter. > > > > OK, in that case yes it should use lmb. That was the question I was > > trying to understand. > > > >> > >> We have protection for srec, fs load, tftp and wget already. > >> > >> c6855195e4b4 ("loads: Block writes into LMB reserved areas of U-Boot") > >> aa3c609e2be5 ("fs: prevent overwriting reserved memory") > >> a156c47e39ad ("tftp: prevent overwriting reserved memory") > >> 04592adbdb99 ("net: wget: prevent overwriting reserved memory") > >> > >> And this is just +1 patch to protect sf command that it doesn't touch > >> reserved > >> location. > >> The same code should be used for other commands(nand, usb, etc) which > >> loading > >> block of data to memory because all of them shouldn't rewrite reserved > >> memory. > >> > >> In connection to mw/mtest/etc command protection can be also done but not > >> sure > >> if this is useful because you normally not using them for booting. > > > > Exactly. > > > > I am hoping that we can pull SPI flash into bootstd...has anyone > > looked at that? Are you using scripts or is there a special bootmeth? > > We didn't find this issue in connection to boot. As I wrote in another reply > we > found it via spi testcases where TF-A was placed lower in DDR and test > overwrite > it without any other evidence. Part of the reason is that protection units are > not enabled to protect secure FW.
Do you mean the sandbox test test/dm/sf.c ? Or something else? If the former, then we could mark dm_test_spi_flash() with CONFIG_SANDBOX Regards, Simon