On Mon, Mar 2, 2020 at 9:05 AM Joel Sherrill <j...@rtems.org> wrote:
>
>
>
> On Mon, Mar 2, 2020 at 9:33 AM Gedare Bloom <ged...@rtems.org> wrote:
>>
>> On Sat, Feb 29, 2020 at 2:58 PM Utkarsh Rai <utkarsh.ra...@gmail.com> wrote:
>> >
>> > I have gone through the details of the project adding memory protection 
>> > using MMU and have a few questions and observations regarding the same-
>> >
>> > 1. Is this a project for which someone from the community would be willing 
>> > to mentor for GSoC?
>>
>> Yes, Peter Dufault has expressed interest. There are also several
>> generally interested parties that may like to stay in the loop.
>>
>> > 2. As far I could understand by looking into the rtems tree ARM uses 
>> > static initialization wherein it first invalidates the cache and TLB 
>> > blocks and then performs initialization by setting up a 1 to 1 mapping of 
>> > the parts of address space. According to me, static initialization of the 
>> > mmu is a generic enough method that can be utilized in most of the 
>> > architectures.
>>
>> Yes, it should be. That is how most architectures will do it, if they
>> need to. Some might disable the MMU/MPU and not bother, then there is
>> some work to do to figure out how to enable the static/init-time
>> memory map.
>>
>> > 3. For the thread stack protection, I believe either of the stack guard 
>> > protection approach or by verification of stack canaries whereby the OS on 
>> > each context switch would check whether the numbers associated with the 
>> > canaries are still intact or not are worth considering. Although I still 
>> > only have a high-level idea of both of these approaches and will be 
>> > looking into their implementation details, I would request your kind 
>> > feedback on it.
>> >
>>
>> Thread stack protection is different from stack overflow protection.
>> We do have some stack overflow checking that can be enabled. The
>> thread stack protection means you would have separate MMU/MPU region
>> for each thread's stack, so on  context switch you would enable the
>> heir thread's stack region and disable the executing thread's region.
>> This way, different threads can't access each other's stacks directly.
>
>
> FWIW the thread stack allocator/deallocator plugin support was originally
> added for a user who allocated fixed size stacks to all threads and used
> the MMU to invalidate the addresses immediately before and after each
> stack area.
>
> Another thing to consider is the semantics of protecting a thread. Since
> RTEMS is POSIX single process, multi-threaded, there is an assumption
> that all data, bss, heap, and stack memory is accessible by all threads.
> This means you can protect for out of area writes/reads but can't generally
> protect from one thread accessing another thread's memory. This may

Right: thread stack protection must be application-configurable.

> sound like it doesn't happen often but anytime data is returned from a
> blocking call, the contents are copied from one thread's address space
> to another. Message queue receives are one example. I suspect all
> blocking reads do this (sockets, files, etc)
>
It should not happen inside rtems unless the user sends thread-stack
pointers via API calls, so the documentation must make it clear: user
beware!

It may eventually be worth considering (performance-degrading)
extensions to the API that copy buffers between thread contexts. But
yes, we are operating outside of POSIX.

> --joel
>>
>>
>> Gedare
>>
>> > Regards,
>> > Utkarsh Rai.
>> >
>> > On Fri, Feb 21, 2020 at 10:28 PM Utkarsh Rai <utkarsh.ra...@gmail.com> 
>> > wrote:
>> >>
>> >> Thanks, I will check it out.
>> >>
>> >> On Fri, Feb 21, 2020 at 12:56 AM Gedare Bloom <ged...@rtems.org> wrote:
>> >>>
>> >>> On Tue, Feb 18, 2020 at 12:45 PM Utkarsh Rai <utkarsh.ra...@gmail.com> 
>> >>> wrote:
>> >>> >
>> >>> > Based on your feedback,  adding memory protection or enhancing Wi-fi 
>> >>> > Support in libbsd are two projects that I would like to work upon.
>> >>> >
>> >>> > For MMU support I think a lot unmerged PowerPC code is already 
>> >>> > present, but since  I would be using BBB I would only be able to use 
>> >>> > that as a reference. Is it feasible to start it from scratch?
>> >>> >
>> >>> The state-of-the-art has advanced in the rtems.git tree since these
>> >>> projects happened, and it is not all documented. The ARM in particular
>> >>> generally uses a static initialization or boot-time initialization of
>> >>> the MMU. You  should study how the ARM approach works in the RTEMS
>> >>> main repo, and consider whether that approach can be adopted by other
>> >>> architectures/BSPs, how to improve that approach, and how to build
>> >>> higher-level services on top of the low-level BSP support that exists.
>> >>>
>> >>> One of the main interesting applications is to provide thread stack 
>> >>> protection.
>> >>>
>> >>> > For Wi-Fi support, I would require an RTL8188 USB dongle along with 
>> >>> > JTAG for debugging purposes. I am not quite sure about how to handle 
>> >>> > the 'hot-plugging' case in this project it would be very helpful if 
>> >>> > someone could point me in the right direction.
>> >>> >
>> >>> I can't speak to the WiFi support, maybe others know. But to get
>> >>> started you would need to at least demonstrate that you have the
>> >>> necessary hardware to succeed and that you can at a minimum boot/run
>> >>> BBB with libbsd, and probably we should like you to show that you can
>> >>> generate patches for libbsd.
>> >>>
>> >>> Gedare
>> >>>
>> >>> >
>> >>> > On Tue, Feb 18, 2020 at 1:21 AM Gedare Bloom <ged...@rtems.org> wrote:
>> >>> >>
>> >>> >>
>> >>> >> On Mon, Feb 17, 2020 at 9:42 AM Utkarsh Rai <utkarsh.ra...@gmail.com> 
>> >>> >> wrote:
>> >>> >>>
>> >>> >>> Hello everyone,
>> >>> >>
>> >>> >> Hello Utkarsh Rai,
>> >>> >>
>> >>> >>>
>> >>> >>> I would like to contribute to the Beagleboard BSP project, in 
>> >>> >>> particular towards the improvement of the peripheral support. I have 
>> >>> >>> a few questions pertaining to the same:-
>> >>> >>>
>> >>> >>> 1. Is adding support for Ethernet and USB a reasonable goal for the 
>> >>> >>> duration of the GSOC?
>> >>> >>>
>> >>> >>> 2. FreeBSD has support for Ethernet and USB  can we port that to 
>> >>> >>> libbsd?
>> >>> >>>
>> >>> >>> 3. What are the deliverables for this project, for instance, would I 
>> >>> >>> be required to add shell support for these peripherals or maybe an 
>> >>> >>> example app?
>> >>> >>>
>> >>> >>> I have also attached a screenshot of the changed  'hello world' 
>> >>> >>> program along with this email
>> >>> >>
>> >>> >> Thanks. It is nice to see that you already ran it successfully on the 
>> >>> >> BBB.
>> >>> >>
>> >>> >> As of now, the BBB has quite mature support including Ethernet and 
>> >>> >> USB. There is another student actively working on a proposal to 
>> >>> >> expand our BBB support a bit further. I'm not certain if there is 
>> >>> >> sufficient work/interest/mentoring available to support multiple BBB 
>> >>> >> projects. You might consider what specific projects would interest 
>> >>> >> you though. You should take a look at past years' GSoC projects 
>> >>> >> documented on our wiki, they are linked from our main 'GSoC' page.
>> >>> >>
>> >>> >> There are also lots of interesting projects that can be done in a 
>> >>> >> BSP-agnostic way, but still could be valuable to test with the BBB. 
>> >>> >> The most important aspect about doing development with a BBB is that 
>> >>> >> you can use the JTAG, which requires some soldering and additional 
>> >>> >> effort to work with a standalone JTAG debugger.  If you don't have 
>> >>> >> that, and want to work with the BBB, it is highly recommended.
>> >>> >>
>> >>> >>
>> >>> >>>
>> >>> >>> _______________________________________________
>> >>> >>> 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