<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Mar 17, 2018 at 1:09 PM, Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</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"><div class="gmail-HOEnZb"><div class="gmail-h5">On Sat, Mar 17, 2018 at 11:58 AM, Amaan Cheval <<a href="mailto:amaan.cheval@gmail.com">amaan.cheval@gmail.com</a>> wrote:<br>
> First off, thank you so much for the prompt and detailed response! I really<br>
> appreciate the help!<br>
><br>
> On Sat, Mar 17, 2018 at 6:46 PM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br>
><br>
>> On Sat, Mar 17, 2018 at 2:24 AM, Amaan Cheval <<a href="mailto:amaan.cheval@gmail.com">amaan.cheval@gmail.com</a>><br>
> wrote:<br>
>> > Hey everyone!<br>
>> ><br>
>> > Here's a link to a draft of my proposal (also shared through the GSoC<br>
>> > website, and linked to on the wiki):<br>
>> ><br>
> <a href="https://docs.google.com/document/d/1X79Yj0DNqvaDFqpJMUX4gF3WC550GDvVDS5QufvAnFE/edit?usp=sharing" rel="noreferrer" target="_blank">https://docs.google.com/<wbr>document/d/<wbr>1X79Yj0DNqvaDFqpJMUX4gF3WC550G<wbr>DvVDS5QufvAnFE/edit?usp=<wbr>sharing</a><br>
>> ><br>
>> > I'd appreciate all comments - even if you're just skimming, let me know<br>
> if<br>
>> > you have something to say!<br>
>> ><br>
>> > I have a few questions too, which I'd appreciate help with:<br>
>> ><br>
>> > Regarding the proposal:<br>
>> ><br>
>> > - Does it seem like I'm committing too little / too much?<br>
><br>
>> I don't think you have work planned in a good way. The scope of the<br>
>> second half is light, while the first half may be heavy. It is OK to<br>
>> have schedule slip, but it is better if you can try to balance the<br>
>> work over the phases. Also, note that GSoC is now a three-thirds<br>
>> instead of two-halves timeline.<br>
><br>
> Noted. I've revised it a bit (same link). Would you mind having another<br>
> look?<br><br></div></div></blockquote><div><br></div><div>I have always thought the first part of this project would be to get </div><div>an UEFI "hello world" running on Qemu. That is the entry point to the</div><div>BSP and as Chris pointed out, there is a fair amount of work just</div><div>to ensure you can do prints to the optional video and later serial port.</div><div><br></div><div>Then that can be hooked to initialize RTEMS. Implement the context</div><div>switch code using setjmp/longjmp as guides. </div><div><br></div><div>With the idle thread that simulates a clock tick, you can run a lot of</div><div>the tests. </div><div><br></div><div>Then deal with the interrupt controller and clock tick.</div><div><br></div><div>Then add COM1.</div><div><br></div><div>All that should be doable and testable on qemu.</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 class="gmail-HOEnZb"><div class="gmail-h5">
>> > - Are there any issues I've completely overlooked? Something I've<br>
>> > oversimplified / that I may not realize the scope / difficulty of?<br>
><br>
>> Getting boot to work properly may be harder than you anticipate.<br>
><br>
> That's a good point. I've made the target for phase 1 about getting stub<br>
> code there, boot/init code started, and patching the x86_64 tools up to<br>
> have them be feature-complete. (It's hard to gauge if that's a satisfactory<br>
> goal given that I'm not quite sure of the current status of the tools -<br>
> this is why I'm hoping to resolve this ASAP.)<br>
><br>
> Would you let me know if the deliverables seem more evenly distributed and<br>
> realistic now?<br>
><br>
<br>
</div></div>It does. I think Phase 3 remains light. I'd encourage you to flesh out<br>
the plan for one of the "bonus" areas for this phase. That way, if you<br>
reach it, you will be prepared to undertake it without having to think<br>
too hard about the design aspects.<br>
<span class="gmail-"><br>
>> Doing the ISR right means implementing the APIC support in a proper way.<br>
>> I think it will be a good idea for you to address SMP issues together<br>
>> with the UP implementation.<br>
><br>
><br>
> I agree, but I'd rather not commit to SMP support since that sounds like it<br>
> might be too much - I can't know that, of course, but I think I'd rather<br>
> keep it a bonus activity that I'll be able to pull in when I'm more in the<br>
> swing of things and better able to gauge the effort required.<br><br></span></blockquote><div><br></div><div>+1</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"><span class="gmail-">
>> > - It seems like Chris (cc'd) owns the x86_64 ticket - would Chris be a<br>
>> > potential mentor, or is ticket ownership not indicative of who the<br>
> mentor<br>
>> > might be?<br>
><br>
>> Yes, Chris or Joel are likely mentors, unless another interested party<br>
> pops up.<br><br></span></blockquote><div>This project will likely require help from multiple mentors with Chris</div><div>and I being the official mentor pair.</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"><span class="gmail-">
> I see! Do mentors usually mentor more than one student?<br>
><br>
<br>
</span>Some do.<br>
<div><div class="gmail-h5"><br>
>> ><br>
>> > Misc:<br>
>> ><br>
>> > - I noticed that this project has been proposed in the past, at least<br>
>> > twice. Is there any constructive criticism from the proposals back then<br>
>> > that I could learn from?<br>
><br>
>> Not really. The previous proposals were weak, and this project was not<br>
>> a high priority back then.<br>
><br>
> Ah. Is there anything I can do to strengthen my proposal, in that case,<br>
> besides the feedback you've already provided? I do already plan to tackle<br>
> more tickets as time permits / get a head start on fixing / verifying the<br>
> x86_64 tools up. Is there anything else I should also be doing? Any other<br>
> resources I should be looking at?<br>
><br>
> I just want to make sure that I know what I'm getting into and that you<br>
> guys aren't making a blind bet - anything I can do to prove to you and me<br>
> that I'm actually capable of handling this task would be immensely helpful.<br>
><br>
><br>
>> > - In the proposals, I've left some tasks about the x86_64 rtems-tools<br>
>> > highlighted in red because I'm hoping to test the tools before the<br>
> proposal<br>
>> > deadline to have a clearer idea for the timeline. The ticket[1] lists<br>
> some<br>
>> > tasks regarding the tools, but I'm not sure what the status of them is<br>
> yet,<br>
>> > or how to carry the tasks out quite yet. I aim to tackle this as soon as<br>
>> > possible, but if you can provide any guidance, I'd appreciate that.<br>
>> ><br>
><br>
>> The x86_64 tools have a recipe in RSB, you can give it a try. The<br>
>> tasks identified there are in two categories:<br>
>> 1. GCC multilib support for FPU -- You should ask Joel to look into<br>
>> this for you. :)<br>
><br>
> @Joel (cc'd) would you mind doing this? If you're busy / don't want to<br>
> (:P), would you mind letting me know how I can do it myself?<br><br></div></div></blockquote><div>Assuming you can handle the newlib additions, I will try to be the point</div><div>person for gcc, gdb, and binutils issues.</div><div><br></div><div>I don't know the multilib requirements at this point.</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><div class="gmail-h5">
> I'd like to dig into the tools as soon as possible because it seems like it<br>
> has the potential to significantly influence my timeline for this project,<br>
> and knowing in advance I'll be better equipped to commit the right amount.<br>
><br>
<br>
</div></div>The reason I suggest Joel might look is because touching GCC code is a<br>
bit of a hassle (the first time).<br></blockquote><div><br></div><div>x86_64 tools are built by the RSB. I think the tool situation is OK except for</div><div>the newlib details below.</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 class="gmail-HOEnZb"><div class="gmail-h5">
>> 2. Newlib support for setjmp/longjmp, and anything else that should be<br>
>> in the libc. You should do this. Join newlib mailing list, check out<br>
>> the source, and find the current i386 and x86_64 implementations.<br>
>> (Hint: newlib.git/newlib/libc/<wbr>machine/[i386 x86_64]).<br></div></div></blockquote><div><br></div><div>

<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">that</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">there is no newlib/libc/machine/x86_64 subdirectory so you definitely have</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">to bring over setjmp/longjmp from FreeBSD.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><a href="https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=tree;f=newlib/libc/machine;h=c554c10f50be1a01a967ed972ec55b03d1efbb10;hb=HEAD">https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=tree;f=newlib/libc/machine;h=c554c10f50be1a01a967ed972ec55b03d1efbb10;hb=HEAD</a><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">Usually you also want CPU specific mem* and str* implementations for speed</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">so anything FreeBSD has should be brought into newlib. I think it is under the </div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">amd64 directory here.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><a href="https://github.com/freebsd/freebsd/tree/master/lib/libc">https://github.com/freebsd/freebsd/tree/master/lib/libc</a><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"> </div><blockquote class="gmail_quote" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><br class="gmail-Apple-interchange-newline">

</div></blockquote><br></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 class="gmail-HOEnZb"><div class="gmail-h5">
>> 3. TLS. There are multiple ways to implement it. I don't know what is<br>
>> preferred for this. See <a href="https://www.akkadia.org/drepper/tls.pdf" rel="noreferrer" target="_blank">https://www.akkadia.org/<wbr>drepper/tls.pdf</a> for a<br>
>> thorough background.<br>
><br>
><br>
> Thank you for the detailed resources! I'll add them to the project ticket<br>
> as well for future reference.<br>
><br>
> P.S. - I'd also like to say congrats to all the maintainers for having such<br>
> a splendid community! It feels great to be a part of such a healthy<br>
> open-source ecosystem!<br>
><br>
>> > Thanks!<br>
>> ><br>
>> > [1] <a href="https://devel.rtems.org/ticket/2898#Tools" rel="noreferrer" target="_blank">https://devel.rtems.org/<wbr>ticket/2898#Tools</a><br>
>> > ______________________________<wbr>_________________<br>
>> > devel mailing list<br>
>> > <a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
>> > <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
</div></div></blockquote></div><br></div></div>