<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:#0000ff">Thank you very much for all your advice, especially for Nico, Felix, Peter</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Thanks.</div><div dir="ltr"><br clear="all"><div style="font-size:12.8px"><div dir="ltr"><div dir="ltr"><div>Regards,</div><div>Melissa Yi</div><div><br></div><div>BIOS Lead Engineer</div><div>Celestica(Shanghai) R&D Center, China</div><div><br></div><div><a href="http://www.celestica.com/" style="color:rgb(17,85,204)" target="_blank">www.celestica.com</a> </div><div>Solid Partners, Flexible Solutions</div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">2017-10-02 4:22 GMT+08:00 Felix Held <span dir="ltr"><<a href="mailto:felix-coreboot@felixheld.de" target="_blank">felix-coreboot@felixheld.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Nico!<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The question I have here is what to do if there is more than one valid<br>
entry. Just using the first one introduces a bit of undetermined<br>
behavior (block order in the flash might be different after<br>
defragmentation).<br>
</blockquote>
No, always choosing the first would be determined behavior. In case we<br>
keep things in order it's also the better choice when it comes to sear-<br>
ching the current, valid entry (we'd have to always search the whole<br>
used space for a newer version otherwise). I'd treat it like this: If<br>
the old version wasn't invalidated, the update didn't finish. So we can<br>
ignore the new version.<br>
</blockquote></span>
I was assuming the ring buffer case here where the first entry in the raw flash address space doesn't have to be the oldest one.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So either use some counter (beware of overflows!) on<br>
either the flash erase block (small overhead and rather efficient) or<br>
the entry (full region has to be either cached or read every time and<br>
needs more bytes than the counter per erase block) or accept the<br>
possibility of undetermined behavior (IMHO not a good idea).<br>
</blockquote>
I'm not sure how to use a per erase-block counter? When would it update?<br>
we could only do that on every erase. A per variable counter might be<br>
useful, but I still hope it will work without.<br>
</blockquote></span>
I was thinking of putting a number in the first word of a block. Every time a new block is allocated, this value is written once. The value is the highest number already used plus 1. Also beware of wraparounds there.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Might be done in a sanitation phase before each write. But if we define<br>
the first entry to be the valid one, we probably don't need it. Update:<br>
I didn't come around in my scheme below... maybe we should make the<br>
update in three steps: tag for update, insert new value, invalidate.<br>
This way we would only have to search for duplicates for valid entries<br>
tagged for update.<br>
</blockquote></span>
Good idea.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Defragmentation:<br>
</blockquote>
Haven't really looked at and thought about your defragmentation phase idea; maybe I'll comment on that next week.<br>
<br>
Regards<span class="HOEnZb"><font color="#888888"><br>
Felix</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
-- <br>
coreboot mailing list: <a href="mailto:coreboot@coreboot.org" target="_blank">coreboot@coreboot.org</a><br>
<a href="https://mail.coreboot.org/mailman/listinfo/coreboot" rel="noreferrer" target="_blank">https://mail.coreboot.org/mail<wbr>man/listinfo/coreboot</a><br>
</div></div></blockquote></div><br></div>