On Tue, 12 May 2020 at 04:57, Gedare Bloom <ged...@rtems.org> wrote:
>
> On Thu, May 7, 2020 at 9:59 PM Hesham Almatary
> <hesham.almat...@cl.cam.ac.uk> wrote:
> >
> > Hello Utkarsh,
> >
> > I'd suggest you don't spend too much efforts on setting up BBB
> > hardware if you haven't already. Debugging on QEMU with GDB is way
> > easier, and you can consider either qemu-xilinx-zynq-a9 or rpi2 BSPs.
> > Later, you can move your code to BBB if you want, since both are based
> > on ARMv7.
> +1
>
> Past work has also used psim successfully I thought? Or am I mistaken there.
>
Before my 2012 project (and part of it, yes), we used psim. The use of
software TLBs wasn't very ideal/easy though, so we moved to ARM in
2013. The development/testing was mainly on a RPi board. I don't
remember there was a QEMU model for it yet.


> >
> > On Thu, 7 May 2020 at 18:26, Utkarsh Rai <utkarsh.ra...@gmail.com> wrote:
> > >
> > > Hello,
> > > This is to ensure that all the interested parties are on the same page 
> > > before I start my project and can give their invaluable feedback.
> Excellent, thank you for getting the initiative.
>
> I'll be taking on the primary mentorship for your project, with
> support from the co-mentors (Peter, Hesham, Sebastian). For now, I
> prefer you to continue to make your presence on the mailing list. We
> will establish other forms of communication as needed and will take on
> IRC meetings once coding begins in earnest.
>
> > > My GSoC project, providing user-configurable thread stack protection, 
> > > requires adding architecture-specific low-level support as well as 
> > > high-level API support. I will be starting my project with ARMv7-A (on 
> > > BBB) based MMU since RTEMS already has quite mature support for it. As 
> > > already mentioned in my proposal I will be focusing more on the 
> > > High-level interface and let it drive whatever further low-level support 
> > > is needed.
> > > Once the application uses MMU for thread stack address generation each 
> > > thread will be automatically protected as the page tables other than that 
> > > of the executing thread would be made dormant. When the user has to share 
> > > thread stacks they will have to obtain the stack attributes of the 
> > > threads to be shared by pthread_attr_getstack() and then get a file 
> > > descriptor of the memory to be mapped by a call to shm_open() and finally 
> > > map this to the stack of the other thread through
> > > mmap(), this is the POSIX compliant way I could think of. Now at the low 
> > > level, it means mapping the page table of the thread to be shared into 
> > > the address space of the executing thread. This is an area where the 
> > > low-level support has to be provided. At the high-level, this means 
> > > providing support to mmap and shared-memory interface as mmap provides 
> > > support for a file by simply
> > > copying the memory from the file to the destination. For shared memory 
> > > objects it can
> > > provide read/write access but cannot provide restriction of write/read 
> > > access. One of the areas that I have to look into more detail is thread 
> > > context-switch, as after every context switch the TLBs need to be flushed 
> > > and reinitialized lest we get an invalid address for the executing 
> > > thread. Since context-switch is low-level architecture-specific, this 
> > > also has to be provided with more support.
>
> This is really dense text. Try to break apart your writing a little
> bit to help clarify your thoughts.  You should also translate some of
> your proposal into a wiki page if you haven't started that yet, and a
> blog post. Both of those will help to focus your thoughts into words.
>
> "mapping the page table" is not meaningful to me. I think you mean
> something like "mapping a page from the page table"?  Will the design
> support sharing task stacks using MPUs with 4 regions? 8?  (It seems
> challenging to me, but might be possible in some limited
> configurations. Having support for those kinds of targets might still
> be useful, with the caveat that sharing stacks is not possible.)
>
> The first step is to get a BSP running that has sufficient
> capabilities for you to test out memory protection with. Do a little
> bit of digging, but definitely simulation is the way to go.
>
> The second step from my perspective is to determine how to introduce
> strict isolation between task stacks. Don't worry about sharing at
> this stage, but rather can you completely isolate tasks? Then you can
> start to poke holes in the isolation.
>
> As you say, you'll also need to start to understand the context switch
> code. Start looking into it to determine where you might think to
> implement changing the address space of the executing thread. Another
> challenge is that RTEMS can dispatch to a new task from the interrupt
> handler, which may cause some problems for you as well to handle.
>
> Have you figured out where in the code thread stacks are allocated?
> How do you plan to make the thread stacks known to other threads?
>
> TLB shootdown can be extremely expensive. Try to find ways to optimize
> that cost earlier rather than later. (One of those cases where
> premature optimization will be acceptable.) Tagged TLB architectures
> or those with "superpages" may incur less overhead if you can
> selectively shoot-down the entry (entries) used for task stacks.
>
> A final thought is that the method to configure this support is
> necessary. Configuration is undergoing some heavy changes lately, and
> application-level configuration is going to be completely different in
> rtems6. You may want to consider raising a new thread with CC to
> Sebastian to get his input on how the best way to configure something
> like this might look, now and in the future. I would have leaned
> toward a high-level configure switch (--enable-task-protection) in the
> past, but now I don't know.  This capability is however something that
> should be considered disabled by default due to the extra overhead.
>
> Gedare
>
> > > Kindly provide your feedback if I have missed something or I have a wrong 
> > > idea about it.
> > >
> > > Regards,
> > > Utkarsh Rai.
> > >
> > > _______________________________________________
> > > devel mailing list
> > > devel@rtems.org
> > > http://lists.rtems.org/mailman/listinfo/devel
> > _______________________________________________
> > devel mailing list
> > devel@rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
> _______________________________________________
> devel mailing list
> devel@rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to