On 09/24/19 11:32, Philippe Mathieu-Daudé wrote: > On 9/23/19 11:46 PM, Peter Maydell wrote: >> On Fri, 20 Sep 2019 at 23:23, Alistair Francis <alistai...@gmail.com> wrote: >>> On Thu, Sep 19, 2019 at 10:15 PM Bin Meng <bmeng...@gmail.com> wrote: >>>> I don't think we should mirror what is used on ARM virt board to >>>> create 2 flash for sifive_u. For ARM virt, there are 2 flashes because >>>> they need distinguish secure and non-secure. For sifive_u, only one is >>>> enough. >>> >>> I went back and forward about 1 or 2. Two seems more usable as maybe >>> someone wants to include two pflash files? The Xilinx machine also has >>> two so I'm kind of used to 2, but I'm not really fussed. > > The Xilinx machine has 2 because it matches the hardware. > >> One of the reasons for having 2 on the Arm board (we do this >> even if we're not supporting secure vs non-secure) is that >> then you can use one for a fixed read-only BIOS image (backed >> by a file on the host filesystem shared between all VMs), and >> one backed by a read-write per-VM file providing permanent >> storage for BIOS environment variables. Notably UEFI likes to >> work this way, but the idea applies in theory to other >> boot loader or BIOSes I guess. > > IIRC Laszlo's explanation, the only reason it is that way is because the > pflash_cfi01 model still doesn't implement sector locking. At the OVMF > emerged from EDK2, to have a safe ROM vs DATA storage it was decided to > use 2 different flashes. > When I understood when this config layout started, I suggested Laszlo to > use a real ROM to store the OVMF CODE since it is pointless to do > firmware upgrade in virtualized environment, but he said it was too late > to change the design.
Right, at that point I couldn't see how "-bios" *plus* "-pflash" could have worked. In chronological order (for OVMF anyway), there was -bios, then -pflash (R/W), then (with some QEMU changes) two -pflash flags (R/O + R/W, which OVMF wouldn't tell apart from the single R/W -pflash). Thanks Laszlo > > If you don't plan to run UEFI "Capsule Update" on your Virt board, I > suggest using memory_region_init_rom() with your firmware CODE, and a > parallel/SPI flash for the data VARStore. > >> I would suggest also checking with Markus that your code >> for instantiating the flash devices follows the current >> recommendations so the backing storage can be configured >> via -blockdev. (This is a fairly recent change from June or >> so; current-in-master virt and sbsa boards provide an example >> of doing the right thing, I think.) >> >> thanks >> -- PMM >>