[coreboot] GSoC-2014 Project for Coreboot

mrnuke mr.nuke.me at gmail.com
Sat Mar 15 22:18:19 CET 2014


On Saturday, March 15, 2014 05:15:12 PM Kevin O'Connor wrote:
> Did you mean to send this only to me?  I'm only sending to you and not
> the list, but I'd prefer the discussion to be on list.
> 
OOPS! I blame it on KMail's shitty "Reply" interface.

> On Sat, Mar 15, 2014 at 01:54:47PM -0500, mrnuke wrote:
>> On Saturday, March 15, 2014 01:02:22 PM you wrote:
>>> On Fri, Mar 14, 2014 at 08:58:01AM -0500, Aaron Durbin wrote:
>>>> CBFS is definitely not friendly to environments that can't map() the
>>>> storage area of the CBFS itself. Beyond that in-storage format with
>>>> metadata tightly coupled to the data itself leads to needing to stream
>>>> large amounts of data through the working set just to locate the piece
>>>> that is desired.
>>> 
>>> CBFS is a neat system for accessing flash that can be linearly mapped
>>> into memory.
>>> 
>>> If one has a flash device that can't be mapped into memory, I don't
>>> understand why one would want to use CBFS.
>> 
>> Last I checked, CBFS stood for "CoreBoot File System". I think that might
>> mean it's the filesystem used by coreboot, but I'll have to double check
>> and get back to you on that.
> 
> I don't think that's a great way to look at it.  The CBFS system is
> clearly designed to delineate a linearly mapped area of memory.  I
> wouldn't recommend using it for something else solely because it
> starts with "CB".
> 
>>> Trying to adapt CBFS to block devices is going to complicate the CBFS
>>> code, and it still isn't going to be a good solution for those block
>>> devices.  There are a number of filesystems already developed for
>>> block devices - why not just use one of them?
>> 
>> And how exactly is this going to complicate CBFS code? And how would
>> adding
>> another filesystem parser into coreboot simplify things?
> 
> The code has a bunch of media->open(), ->close(), ->read(),
> etc. operations that are unnecessary for basic linear memory mapped
> accesses.  As you've already cited, even with these "media" accessors
> the system still doesn't work well for not mapped flash chips.
> 
> By moving the abstraction up a layer, I posit that the CBFS code could
> be simpler, and the ARM code could be more capable.
> 
>>> The coreboot code's interaction with the "filesystem" after memory
>>> init
>> 
>> Aye, there's the rub: the assumption of "after memory init".
> 
> Before memory init everything is different on these non-mapped flash
> systems anyway.  In past conversations I've been told the hardware (or
> builtin firmware) on these systems extracts a preset block from the
> flash and places it into sram, and this is how the bootblock/romstage
> is done on these systems.  Thus the execute in place nature of
> bootblock/romstage in CBFS has no added value for these platforms.
> 
>>> (should) largely boil down to load_file(char *name, void
>>> *address, int maxsize).  Why not just end the abstraction there (ie,
>>> on these arm devices, implement a completely different "load_file"
>>> function).
>> 
>> Did you have a look at our CBFS backending, by any chance?
> 
> Yes.
> 
>> I'm sorry to be dismissive of your comments, Kevin, but it seems to me you
>> do not fully understand the issue and its implications. I suggest you
>> fully read this thread and "CBFS bullfart (forked from GSoC-2014 Project
>> for Coreboot)" to get an idea of the problem and its subtleties.
> 
> I have read the thread.  I concur that I do not understand.
> 
> -Kevin




More information about the coreboot mailing list