[lowrisc-dev] Re: GSOC 2016 Aspirant for Improving device-tree support for the Linux RISC-V port

Saket Sinha saket.sinha89 at gmail.com
Tue Mar 15 03:04:15 GMT 2016


Hi Roy,

> Here's some broader questions that you might want to answer for yourself
> before we can discuss any technical details: What would be your project's
> end goal (and how would you show it)? Where are the challenges in this
> project? How do you think this problem breaks down in manageable chunks? How
> are you going to tackle them? What do you intend to learn from your attempt
> in doing so?
> I hope this helps you get on the right track for the application procedure.

I have tried to answer the  above questions in my project proposal below.

Please find below my initial proposal for the project for review so
that we can capture all the relevant features
related to the project in the scope of the program.

Project Name - Improve device-tree support for the Linux RISC-V port

Project Abstract -

Implement solid, well-tested device-tree support for the Linux RISC-V port.

The Linux RISC-V port is currently fairly barebones, and makes use of
the host-target interface (HTIF) for most I/O. This project would
involve cleaning it up, ensuring there is good support for
instantiating devices using device-tree, and thoroughly testing this
through modifications to the bootloader and to QEMU.


Project Description -

1- Support  RISC-V low-level device tree support in Linux and QEMU

a) Device Tree support at the platform level needs to be added in the
Linux device driver layer.
b) QEMU also needs to recognize device trea and parse it accordingly .

2- Provide infrastructure for testing same Linux image with different
device-trees for  RISC-V emulation on QEMU

The following infrastructure is proposed to test same Linux image with
different device-trees
developer_workstation ---pushes changes---> Github -----triggers
build----> Jenkins ---produces images ---> run in containers


Project Deliverable

April 22 - 23 May (Community Bonding Period) -
1. Port RISCV Linux to the latest Linux tree.
2. Get the build and test environment ready


23 May - Midterm Evaluation -
1.Add device tree support to RISCV Linux

Midterm Evaluation - August 23 -
1. Add device tree support to RISCV QEMU.
2. Test same Linux image with different device-trees with the help of
continuous integration sing Jenkins and containers.

Relevant Background Experience

Where do you go to school? What level are you?
I am doing Master of Science - M.Sc. - (CS-FOSS) from Anna University,
Chennai, India.

What would be your project's end goal (and how would you show it)?
We should have a much better QEMU support in following ways --
1. Add device tree support to RISCV QEMU
2. Add more hardware support in form of different SoCs such as a hard
drive, framebuffer, and virtio.
3. Optimize for speed. Patches are partially available for an old
version of QEMU.


We should have a much better Linux support for RISCV in following ways --
1. Add device tree support to RISCV Linux
2. Provide images running Linux for testing and to test the QEMU-user
support.
3. Provide good Linux images ( like a Debian port of RISCV). Would be
nice to offer a working
image as well.

Where are the challenges in this  project?
The most challenging part is testing different device tree
configuration with the same kernel. We need to set up a Continous
Integration setup environment to achieve it.


How do you think this problem breaks down in manageable chunks? How
 are you going to tackle them?

The project is broken down in three phases   -
1. Add device tree support to RISCV Linux
2. Add device tree support to RISCV QEMU
3. Testing environment to test the above support


Experience

Free Software Experience/Contributions:
GITHUB ACCOUNT- https://github.com/disdi/

1. PROJECT: BOSS-MOOL- A Joint Initiative of DOS Lab IIT Madras and CDAC Chennai
ROLE: (Developer, community support)
http://dos.iitm.ac.in/projects/MOOL
Minimalistic Object Oriented Linux(MOOL) project aims at redesigning
the existing linux kernel with minimal set of core OO components. MOOL
provides Object Oriented wrappers for core Linux kernel in C++. These
wrappers support the development of kernel modules in an OO fashion.

2. PROJECT: HEPunion filesystem implementation as Linux module
ROLE: (Developer)
https://github.com/HeisSpiter/hepunion
The aim of this project is to adapt and extend union file system as a proper
Linux module to address the requirements of a a huge computing facility, in
our case which is LHCb experiment (Large Hadron Collider beauty) at
CERN.

3.Project : U-boot, Buildroot & Android support for Intel Baytrail Processor
ROLE: (Developer)
Building up a custom board specific Linux & Android distribution for the
MinnowMax Board(Intel Atom Processor) including setting up U-boot
support, kernel
image and cross compiler from scratch. Design and implementation of a
generic PCI
Express-based framework, BAR-addressed registers & DMA based Operation. Added
Advanced Configuration and Power Interface support for Minnowmax & QEMU in
U-boot mainline. Added custom board specific config to support Android Lollipop.

Language Skill Set
Being proficient in C programming and being familiar with bash script
programming and perl, python programming
Being familiar with Linux, AIX, FreeBSD OS
Being familiar with the x86, ARM, and MIPS architecture and emulation
softwares like QEMU.
Being familiar with botloaders like U-boot and coreboot.
Being familiar with version control system --- git.


Regards,
Saket Sinha



More information about the lowrisc-dev mailing list