[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [GSoC] GSoC Introduction : Fuzzing Xen hypercall interface



Hi Felix,

On 24/03/17 08:34, Felix Schmoll wrote:
> On another note, would it be possible to apply for a second project
> (Adding Floating Point support to Mini-OS) without having to do another
> patch?

Sure. In case both projects get selected you have to pick one of them.

The patch you've sent is fine for both.

> I added Juergen Gross in the recipients for this. I'd still be prefer
> the fuzzing project in case I can figure out a useful proposal, but the
> idea for the floating point project seems much clearer, so I figured to
> have something along the following lines as my proposal (I also assumed
> that the template you provide
> [https://wiki.xen.org/wiki/GSoC_Student_Application_Template
> <https://wiki.xen.org/wiki/GSoC_Student_Application_Template>] is still
> active):
> 
> 
>       1) Personal Information
> 
> *1.1) Full Name: Felix Ekkehard Schmoll*
> 
> *1.2) Email: eggi.innovations@xxxxxxxxx <mailto:eggi.innovations@xxxxxxxxx>*
> 
> *1.4) Other applications:* Not currently
> 
> *1.5) Previous experience:* No
> 
> *1.6) Time commitment:* full-time
> 
> *1.7) Other programs:* No
> 
> 
>       2) Preparation done so far
> 
> *2.1) Hardware*: Yes.
> 
> *2.2) Ability to Build and Test*: Yes.
> 
> *2.4) Other*: Did patches suggested bei Wei Liu to get familiar with the
> hypervisor in general
> (https://lists.xen.org/archives/html/xen-devel/2017-03/msg01450.html
> <https://lists.xen.org/archives/html/xen-devel/2017-03/msg01450.html>)
> 
> 
>       3) Proposed Project
> 
> *3.1) Project Category for which you are applying* Mini-OS
> 
> *3.2) Title for your proposal* Adding Floating Point Support to Mini-OS
> 
> *3.3) Link to original proposal* 
> 
> https://wiki.xenproject.org/wiki/Outreach_Program_Projects#Adding_Floating_Point_support_to_Mini-OS
> <https://wiki.xenproject.org/wiki/Outreach_Program_Projects#Adding_Floating_Point_support_to_Mini-OS>
> 
> 
>       4) Implementation Plan
> 
> *4.1) Detailed Problem Description* (Provide a high-level overview
> textual description of the problem): Mini-OS is a small kernel provided
> as part of the Xen project that is mainly used for stub domains,
> allowing to outsource certain computations from dom0. Currently Mini-OS
> however doesn't support the use of floating point registers, meaning
> that userspace programs can't do floating-point computations if they are
> multi-threaded. This should be fixed.
> 
> *4.2) Implementation Plan* (Provide as much detail and organisation as
> you can. Discuss with your mentor. Make sure you build in sufficient
> time for learning and getting up to speed. The questions in section 2
> will help you and are very valuable to create a plan): At first I will
> implement a test application and read up on the details of floating
> point support for x86 and ARM. I will then start with x86, make sure
> that the application runs and continue with ARM. Once that works too I
> will do some thorough testing.

Adding FP-support for ARM isn't required, as Mini-OS isn't functional
on ARM yet. :-)

> *4.3) Expected Outcomes/Goals:* (List the main outcomes that you will
> deliver during the program - this does not have to be perfect. It is
> also a good idea to link to a discussion on the relevant public mailing
> list here to give us some context. As an aside, it will also help you as
> well. Set some minimum outcomes/goals and stretch outcomes/goals - these
> are nice to have's. If you have experience with or prefer agile
> development methodologies, write down what you would like to achieve in
> different scrums. That's perfectly OK: you may want to discuss with your
> mentor - he/she can act as product owner or scrum master if you want. Do
> agree with him/her upfront.) 
> 
>   * Userspace-program to test functionality of floating point registers
>   * Patch that implements functionality of floating point registers for
>     x86 and ARM
> 
> *4.4) Timeline* (Be specific and as complete as you can. Discuss
> feasibility with your mentor. Build in some buffers and set some stretch
> goals. This will help you with progress and motivation! ):
> 
> *Bonding Period*
> 
> Follow mailing lists
> 
> Ask clarifying questions
> 
> *Weeks 1-2/ May 30 - June 13*
> 
> Reading into the kernel and how usually floating point operations are
> implemented
> 
> Read up on documentation (e.g. Intel Architecture Software Developer's
> Manual, Volume 1: Basic Architecture, Chapter 7 on the Floating-Point Unit)
> 
> Build example application based on where critical parts are identified
> 
> *Weeks 3 - 4, June 14 - June 30*
> 
> Implement on x86
> 
> *Midterm deliverables*
> 
> Test application using floating point registers
> 
> *Weeks 5-6*
> 
> Implement on ARM

No.

In case you have some spare time there are several areas of optimization
you could explore: lazy FP state saving/restoring, support of FXSAVE,
XSAVE and XSAVEOPT depending on the processor capabilities, ...

> 
> *Weeks 7-8*
> 
> Buffer time
> 
> *Weeks 9-10*
> 
> Do thorough testing, consider edge cases, do stress testing, commit to
> source tree
> 
> *4.5) Maintenance: *I don't expect any maintenance to be required, the
> Mini-OS tree seems to be fairly stable.
> 
> 
>       5) Let us know how much help you need
> 
> *5.1 Describe experience* with Domain Support, Xen Hypervisor, The XAPI
> toolstack, Mirage OS, Windows PV Drivers, Embedded & Automotive Drivers
> (as appropriate): No previous experience
> 
> *5.2) Other experience:* describe relevant experience that you have (If
> possible, describe what uniquely qualifies you for this proposal): Took
> 15-410 at CMU, i.e. building a kernel from scratch in six weeks,
> involved ASM and obviously large amounts of kernel programming and used
> an x86 processor; notably the kernel did also not support floating point
> computations; also built a thread-library based on the kernel
> 
> *5.3) Learning and support:* describe the part(s) of the proposed plan
> do you expect to be most difficult ( Include the specific types of of
> mentor help you think you will need for the part(s): Understanding the
> specifics of the processor architectures might require some help, in
> case I have troubles with specific parts of the manuals. They're usually
> quite detailed though.
> 
> *5.5)* Describe the part(s) of the proposed plan do you expect to be
> easiest:
> 
> Building the user space application (user space is generally easier than
> kernel and you don't have to get any offsets right or alike)
> 
> Questions:
> *What if the CPU doesn't have an FPU? Is that even possible for the
> given two architectures?

A FPU is always present on the x86 processors Xen is supporting.

> Any comments would be appreciated.

Thanks for your interest in this project!


Juergen

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.