<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 26, 2021 at 9:33 PM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 26, 2021 at 8:24 AM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 23/01/2021 07:27, Utkarsh Rai wrote:<br>
<br>
> The issue that remains is of User extension iterators, in particular <br>
> of nested iterators. My idea is to disable memory protection in places <br>
> during iteration where inter-stack access takes place.  The problem is <br>
> determining the region for which memory protection needs to be <br>
> disabled. One way to get around this would be by disabling memory <br>
> protection for all the stacks, in a blanket-based manner. <br>
<br>
I used this approach for a Nios II system with a thread stack <br>
protection. We trust the operating system, so this approach should be fine.<br>
<br></blockquote><div>+1 that looks good for an initial solution.</div><div>[...]</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>
> The other possibility is to access the last blocked thread and disable <br>
> memory protection just for the stack of this thread (as inter-stack <br>
> access of the previously blocked thread takes place during iteration). <br>
> How to get access to the queue of blocked threads? And is this method <br>
> feasible?<br>
The system doesn't know the last blocked thread currently. I am not sure <br>
if knowing the last blocked thread helps you here.<br>
<br></blockquote><div><br></div><div>If I recall right, there are two problems to solve.</div><div>1. The user extension iterator code uses thread stacks to manage some of its data structures. The correct fix would be to rewrite it to use some workspace regions probably, but this is out of scope. I suspect that this is the case where the last blocked thread stack is the one that gets used?</div></div></div></blockquote><div><br></div><div>Yes.</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"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>2 . The user extensions themselves might touch thread stacks as they run. This is probably a common case that would need to be resolved like Joel said, by punting responsibility to the user to disable protection before/after touching stacks.</div><div> </div><div>The simple solution is to disable/enable around the call to the user extension iterator, while the slightly more advanced solution is to do that within any RTEMS-provided extensions that touch the stack. Utkarsh, you might want to start with the simple solution to get everything working, and make a plan to do the more advanced solution. </div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>It could be possible that addressing #1 and #2 is appropriate for the revised GSoC scope (50% as large projects). </div><div></div></div></div></blockquote><div><br></div><div>Ok, I will start with the simpler solution.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> <br></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div>-Gedare</div></div></div>
</blockquote></div></div>