<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 15, 2017 at 4:55 AM, Richard Hughes <span dir="ltr"><<a href="mailto:hughsient@gmail.com" target="_blank">hughsient@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
I'm the maintainer of fwupd, which is a daemon for doing firmware<br>
updates in Linux. Using fwupd about 200,000 people update firmware<br>
every month. At the moment I have an out-of-tree patch to use the<br>
flashrom CLI for updating coreboot on Purism laptops, which exec's a<br>
flashrom binary with the correct arguments and then screen scrapes the<br>
output. This is less than ideal. I saw the appearance of a libflashrom<br>
in the staging branch and got very excited. I'm assuming the long term<br>
goal here is to install a shared with stable API/ABI library and a<br>
pkg-config file. If so, please keep reading.<br>
<br>
One thing that is really important for fwupd is progress completion;<br>
as flashing the firmware is an inherently scary thing to do users do<br>
like to see a progress bar move from 0% to 100% in a gradual way as<br>
it's very re-assuring. This is even more important for the GUI, where<br>
people that just see a spinner don't know if the process is going to<br>
take 10 seconds, or 10 minutes.<br></blockquote><div><br></div><div>Agreed! Especially since a lot of users have large chips, slow programmers, or sometimes both. Simple read operations can take a worryingly long time on some common hardware these days.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Would it be possible to have a process callback for<br>
flashrom_image_read(), flashrom_image_write() and<br>
flashrom_image_verify()? It'd need to have some kind of callback<br>
userdata too, for instance:<br>
<br>
int flashrom_image_verify(struct flashrom_flashctx *, const void<br>
*buffer, size_t buffer_len, flashrom_progress_callback callback_fn,<br>
void *callback_user_data);<br>
<br>
and also:<br>
<br>
typedef void(flashrom_progress_<wbr>callback)(uint64 completed, unit64<br>
total, void *user_data)<br></blockquote><div><br></div><div>The short answer is yes. Nico also briefly mentioned an idea on IRC to use a mechanism similar to flashrom_set_log_callback() to avoid complicating function signatures for the read, write, and verify functions.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
I'm not familiar at all with flashrom internals, but could try to<br>
produce a patch if required -- although to propagate the progress<br>
through operations would mean patching a lot of chip->read() callbacks<br>
which probably requires a more experienced hand. Ideas welcome,<br>
thanks.<br>
<br>
Richard.<br>
<br>
______________________________<wbr>_________________<br>
flashrom mailing list<br>
<a href="mailto:flashrom@flashrom.org">flashrom@flashrom.org</a><br>
<a href="https://mail.coreboot.org/mailman/listinfo/flashrom" rel="noreferrer" target="_blank">https://mail.coreboot.org/<wbr>mailman/listinfo/flashrom</a><br>
</blockquote></div><br></div></div>