Phase 2: projects

Suggestions:

Eudyptula Challenge

http://eudyptula-challenge.org/

OS Islene's Labs (not meant for upstream)

http://www.ic.unicamp.br/~islene/1s2017-mc504/proj2/proj2.html

EVoC

https://www.x.org/wiki/XorgEVoC/ (LEVEL: Variable)

DRM TODO list

Bugs

Ask the organizers, we might have some bugs for you ;)

  • Investigate, replace and try to drop hwmon_device_register. I.e.: (LEVEL: Beginner.)

(NULL device *): hwmon_device_register() is deprecated. Please convert the driver to use hwmon_device_register_with_info().

  • Drop usb/chipidea dependency on OF: chipidea is usable on x86 platforms (razr-i-work) but it has a hardcoded dependency on OF which is not needed and causes those platforms to fail probe. There is a scratch patch available, but it is not suitable for submission.

https://git.krisman.be/?p=linux.git;a=commit;h=c59e09e43d4473664030cc1cdcd55f3fc5130c44 (LEVEL: Beginner)

  • Bugs.freedesktop.org (LEVEL: Variable)

Serial layer/8250

  • Handle setserial ioport misconfiguration gracefully on !x86* architectures (LEVEL: Medium)

V4L2: VIMC

  • HDMI input submodule (LEVEL: medium)

  • S-VIDEO input submodule (LEVEL: medium)

  • Add frame rate control (LEVEL: beginner/medium) - WIP - Guilherme Gallo

  • Optimize pipeline by generating image on capture device (LEVEL: medium) - WIP - Lucas Magalhães

  • Add cropping with the Selection API (LEVEL: medium)

V4L2: VIVID

  • Proper implementation of connect and disconnect of HDMI input: events are not emulated by vivid (LEVEL: medium)

  • Loopback driver: allow interconnection between vivid instances, useful for more complex hardware (several HDMI inputs/outputs) (LEVEL: medium)

  • Emulation for metadata (histogram) (LEVEL: medium)

  • Software defined radio output (LEVEL: medium)

  • Improve timestamp system - WIP - Gabriel Mandaji

V4L2: Documentation

  • Per extended controls in a separate documentation (LEVEL: beginner)
  • Re-organizing and improving the selection API docs (LEVEL: beginner)

V4L2: M2M (memory-to-memory) framework

  • Add support for multiple planes in M2M framework (LEVEL: medium)

CEC compliance tests: raspberry-pi + CEC TV (userspace)

  • In-depth tests of CEC features, step-by-step: timing, tuning, etc (multiple people for each feature) (LEVEL: medium)

V4L2: convert soc_camera (hardware required)

  • Soc_camera needs to be removed, the implementation of the sensors needs to be converted to use the framework properly. Check how the mt9t112 was done. (LEVEL: medium/hard)

V4L2: improve tests (userspace)

  • v4l2-ctl: helpers for testing streaming, similar to v4l2-compliance

  • Improve v4l2-ctl and v4l2-compliance for m2m devices

V4L2: Others

https://www.linuxtv.org/wiki/index.php/Media_Open_Source_Projects:_Looking_for_Volunteers

Run the mainline kernel on Android phones with a GNU userspace.

Requires a lot of hacking all around the kernel.

Available Hardware:

  • Razr-I: boots ok, DRM bugs.
  • N900: Almost fully supported.
  • Moto E Condor
  • Moto X Ghost
  • HTC Desire HD
  • Your own phone!

LEVEL: Medium, Hard.

Sw_sync: fences

  • Add support for programing the behavior of fences in the sw_sync driver, a way to inject failure to allow testing when fences fails. (LEVEL: medium)

Kernel-ci: add smoke tests (userspace)

  • Add a kernel-ci test for each kernel subsystem (LEVEL: variable)

linux-next

Run linux-next and report problems found there. It is easy to find kernel build warnings to fix or other issues.

https://www.kernel.org/doc/man-pages/linux-next.html

vrealloc()

  • vrealloc() -> realloc memory without copying, but just extenting the page. See if we have use for it, if it make sense

Network File System

  • NFS -> writting mode, then make the network go down, it starts closing NFS and call fsync but fsync is unkillable (so it doesn't respond to a fatal signal) and it hangs forever. fsync sends the command over the network and wait for the response that never arrives. So this wait needs to become a killable wait. TODO: see if this is still the case, this can be emulated using a VM. https://github.com/kdave/xfstests/tree/master/test://github.com/kdave/xfstests/tree/master/tests

aio

  • work/test/verify this https://patchwork.kernel.org/patch/10110007/

GCC flag - WIP - Leonardo Brás

  • -Wshadow=local turn this flag on in the build and fix the warnings.
    int f(int a, int b) {
        if (a) {
            int b = 3; // this is shadowing the previous defined variable b
            g(a, b);
        }
    }

remove IDR

xarray -> project to replace the radix tree https://lwn.net/Articles/745073/

This is more advanced and it is blocked by the xarray, but will require analysis of individual drivers

Debug wlist - WIP - Leonardo Brás

http://git.infradead.org/users/willy/linux-dax.git/shortlog/refs/heads/wlist

test suite passes, but the kernel doesn't boot, it hangs at some point.

vm_fault_t

converting fault handlers from returning plain INTs into a new vm_fault_t The next set of things to do in this area is to convert the remaining callers of vm_insert_page to call vmf_insert_page. This is going to be tricky because they or their callers are expecting errnos today. So it's going to be painstaking work, not something to be done in a hurry.

More ideas

https://www.labbott.name/blog/2016/08/15/ideas-for-getting-started-in-the-linux-kernel/

Check TODO files:

find -name "*TODO*"