On 25 August 2014 23:03, Laszlo Ersek <ler...@redhat.com> wrote: > On 08/25/14 21:19, Ard Biesheuvel wrote: >> This series adds a platform config to support QEMU based virtual machines, >> either in TCG or KVM mode. These virtual machines declare their platform >> configuration by passing a device tree which needs to be parsed by Tianocore >> rather than relying on hardcoded peripherals. >> >> Currently, the only assumptions made with respect to the platform config are: >> - at least 1 MB of DRAM at 0x4000_0000 >> - NOR flash at 0x0 > > I'll strive to find the time to review this great series. >
Thanks. > But, in advance, can we put the flash somewhere else, like at 0x8 or > 0x10? Every time we treat NULL as a valid pointer to a firmware volume > *in C*, the fabric of the universe comes a bit more unstitched. > Fair enough. With the following added to the .fdf, I am able to drop the patch to allow FVs at 0x0. -0x00000000|0x00200000 +0x00000000|0x00001000 +DATA = { + 0x0, 0x4, 0x0, 0x14 # b 0x1000 +} + +0x00001000|0x001ff000 -- Ard. > For one, if a standards-conformant compiler manages to deduce that your > FV pointer is a null pointer, and then you dereference that pointer, the > compiler will have carte blanche to do whatever it pleases (undefined > behavior). We should not base this patchset on undefined behavior. > > Using a zero physical address might be fine in assembly, but it isn't > fine in C, for two reasons: > > - On this specific implementation, the bit pattern for the zero > address, and the bit pattern for null pointers, coincide. > > - Per the C99 standard, 6.3.2.3 Pointers, > > 3 An integer constant expression with the value 0, or such an > expression cast to type void *, is called a null pointer constant. > [...] > > (As soon as the NOR flash's base address appears in the source code, in > the form of an integer constant, and it's 0, we have big trouble. Not > sure if this case ever occurs, but we shouldn't tempt it.) > > Again -- this would be perfectly fine in assembly, but given the C > standard, it is not fine in C. > > Thanks > Laszlo > ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel