<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><br><div><blockquote type="cite"><div>On May 13, 2023, at 05:12, Nicholas Piggin <npiggin@gmail.com> wrote:</div><br class="Apple-interchange-newline"><div><div>Current gcc with -Os happens to generate code that re-loads the variable<br>in the loop, but that could change without notice, and with -O2 it does<br>infinite loop if sync_msg is !NULL, because it is not declared volatile<br>and there is no compiler barrier in the loop.<br></div></div></blockquote><div><br></div>I guess it’s a good thing we only ever had size constraints rather than performance ones :)</div><div><br></div><div><blockquote type="cite"><div><div>Add the usual cpu_relax() there to provide the compiler barrier.<br></div></div></blockquote><div><br></div><div>I’m trying to remember if we needed a call to go do background work if only one CPU thread but it turns out my memory is getting hazy on the details, and I 100% need more coffee right now.</div><br><blockquote type="cite"><div><div>Signed-off-by: Nicholas Piggin <npiggin@gmail.com><br></div></div></blockquote><div><br></div><div>Feel free to have my first skiboot reviewed by in a while though :)</div><div><br></div><div>Reviewed-by: Stewart Smith <<a href="mailto:stewart@flamingspork.com">stewart@flamingspork.com</a>></div></div><br></body></html>