BeagleBoard/GSoC/2019Proposal/Xen on BeagleBoard-x15

=Proposal =

The project idea is to make Xen hypervisor available and easy to use on beagleboard-x15. To achieve this, it is planned to write Xen-supporting code and tutorials for Xen setup on the board. Another project goal is to improve user experience by working on optimizations for Beagleboard's kernel virtualization support code and/or on user-space tools. Previously, the problem was discussed in xen mailing list and in beagleboard mailing list. The general solution wasn't provided and it seems that the problem still does exist. The virtualization will make prototyping of virtualization-based security solutions easier in such areas like automotive computing and mobile privacy (BYOD problems).

A patch required for application is here.

Student: Denis Obrezkov Mentors: Jason Kridner, Stefano Stabellini, Julien Grall, Iain Hunter Code: https://github.com/embeddedden Wiki: https://elinux.org/BeagleBoard/GSoC/2019Proposal/Xen_on_BeagleBoard-x15 GSoC: N/A

=Status= Most of the project goals were achieved.

About you
IRC: embden Github: https://github.com/embeddedden School: University of Bremen Country: Germany Primary language: Russian Typical work hours: 9AM-5PM UTC Previous GSoC participation: previous participation (RTEMS port for HiFive1). The main reason for participation is to make embedded virtualization available for users and to enhance my skills in embedded Linux, Xen and improve my knowledge of ARM architecture.

About your project
Project name: Xen on BeagleBoard-x15

Description
In my project I want to provide a working implementation of Xen hypervisor on BeagleBoard-x15. This implementation will allow users to experiment on embedded virtualization and in related fields like automotive, critical systems prototyping and processor's resources sharing. It might also provide very interesting possibilities for heterogeneous resources' utilization. Another important outcome for both Xen and Beagleboard communities is a set of documentation on installation and usage processes. I hope that the project will also allow to make both this projects (beagleboard and xen) more popular among open-source and industrial developers.

My own motivation for this project is to improve open-source embedded virtualization. The knowledge obtained during the project will simplify my work in the field of embedded and mobile security.

The technology stack in this project involves arm architecture, Linux kernel, Xen virtualization and bootloading. The main programming language is C and assembler will likely be used. Also, some C++ might be used for writing utilities. The hardware needed for this project is Beagleboard-X15 and xds-200 debugger. The gdb debugger will probably be used in this project.

Timeline
Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)

2019-05-27: Pre-work 2019-06-03: Milestone #1 2019-06-10: Milestone #2 2019-06-17: Milestone #3 2019-06-24: First evaluation milestone 2019-07-01: Milestone #5 2019-07-08: Milestone #6 2019-07-15: Milestone #7 2019-07-22: Second evaluation milestone 2019-08-05: Milestone #9 2019-08-12: Milestone #10 2019-08-19: Coding completion milestone
 * to find out what exactly I want to accomplish
 * to collect all required documentation (ARM, Xen, Linux)
 * to make introductory Youtube video
 * to set up a working environment and document Xen for Qemu experience
 * to start implementing interrupt controller support for Xen
 * to start a small report on it (wiki page)
 * to make the first naive implementation of interrupt controller
 * to allow a dom0 machine to run on Xen (task switching, timer interrupts)
 * to document it properly
 * to allow a dom0 machine to run on Xen (further improvements)
 * change documentation
 * to add uart interrupts support
 * to add documentation on debugging
 * to provide better uart support
 * to add documentation
 * to add other periphery support
 * to allow dom0 run on Xen without serious problems
 * to document periphery
 * to allow both dom0 and domU to run simultaneously
 * to check xen-tools support
 * to document xen-tools support
 * to improve code quality
 * to improve code quality
 * Completion Youtube video

Some milestones weren't achieved and some of them turned out to be redundant. For example, though documentation on debugging (with a jtag-debugger) was planned, it didn't contribute directly to the main goal, so the decision was taken to omit the step. At the same time, domU-related milestones weren't achieved at all. Since, the support of domU more or less trivial and should work almost "out of box", I decided to work more on the code for better dom0 support.

Experience and approach
Currently, I am a PhD student in the University of Bremen, Germany. In my PhD project I am working on security mechanisms for embedded and mobile systems. Currently, I am developing a simple mechanisms for managing SELinux attributes in a natural way for both Android and Linux systems with Qt (the work is in a very initial state).

Before this study, I was working with OMAP-L137 (with both ARM and C6x cores) for two years in a R&D company. My main duties were writing bare metal code (UART and SPI drivers) and embedded Linux user-space utilities, mostly, parsers.

In 2017, I have participated in GSoC with RISC-V on RTEMS project. My goal was to make a port of RTEMS for the HiFive1 board. The port was done till the end of the GSoC. Though, it wasn't merged (because of a very small memory on the board (32 KB) while RTEMS required at least 64 KB) it still might be used for future SiFive SoCs.

I am pretty optimistic about my chances on successful implementation with the proposed project. On the one hand, I will work on the board that already had few revisions and has an established community. On the other hand, I will be supported by mentors from different organizations (ARM, Xen, 3rd Party). And since I have no problems with requesting help I assess my chances on successful completion of the project as pretty high.

Contingency
What will you do if you get stuck on your project and your mentor isn’t around?

Most of the time, when I get stuck I go to the related IRC channels and ask for help. If I don't receive any help I ask people in mailing lists and on related forums.

Benefit
If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.

The main benefit from my project is opening of a new area of Beagleboard's application. At I stated in the description of the project it'll allow to explore with BeagleBoard such fields as automotive and embedded security.

@hendersa:

I think that your proposed port of Xen is a good and useful project for GSoC. The X15 has a lot of processing power, lending itself well to topics (like virtualization) that have historically not been a focus in ARM-based hobbyist/maker platforms. It is good to see that there might be a chance that expertise in the community can support virtualization on the board and provide a starting point for containers for security and the like.. It is an ambitious and non-trivial project, but you've done much of the background exploration on it and appear to have a good grasp on how much effort it will take.

Suggestions
Is there anything else we should have asked you?