Juice: Integrate Sync Driver into the Linaro Androidization Branch

Registered by Zach Pfeffer

What?
The sync driver in Android's tree needs to be pulled into Linaro Androidization branch so that it can be included in linux-linaro. Good documentaiton is located here: https://android.googlesource.com/kernel/common/+/6bb93daf5974e55749791d2e6c993583c5737080/Documentation/sync.txt
Existing test program system/core/libsync/sync_test.c may be used as a base to
implement unit test.

Why?
The sync driver has a user interface. Because of this it may not operate correctly in a 64/32 bit platform. We need to integrate it into the kernel and into our builds and produce a unit-test for it, to ensure it works correctly on 64/32 bit and 32/32 bit platforms.

What gets produced?
1) 64/32 bit and a 32/32 bit build with the sync driver integrated.
2) Unit test to verify userspace interface of the driver.

Where will the work get put?
In the Androidization tree, in linux-linaro and in android-build.

Blueprint information

Status:
Complete
Approver:
Zach Pfeffer
Priority:
High
Drafter:
Dmitry Antipov
Direction:
Approved
Assignee:
Amit Khare
Definition:
Approved
Series goal:
Accepted for juice
Implementation:
Implemented
Milestone target:
milestone icon m2
Started by
Zach Pfeffer
Completed by
Jakub Pavelek

Related branches

Sprints

Whiteboard

Meta:
Duration: 2w
Headline: The sync driver has been included in linux-linaro and in the required Android builds and tests have been written for it.
Roadmap id: CARD-199
Acceptance: The following items must be satisfied:
1. The sync driver must be include in the Androidization branch maintained by John Stultz
2. The sync driver must be included in linux-linaro
3. The sync driver must be included in the ARM LTs kernel
4. The sync driver must ship in a build
5. The sync driver must have a unit test that runs with the build

[2012/12/4 pfefferz] Please put notes here.

[2012/12/18 pfefferz] Bumping to 13.01 due to over planning.

[2012/12/18 jstultz] So at a high-level the sync driver should already be in the Linaro-android 12.12 branch. Although an assessment is needed to understand exactly the functionality that the driver provides to both userland and kernel space. I'm not sure if there are platform specific driver integration that is needed to utilize the sync framework or not.

[2013/01/28 antipov] Driver is platform-independent so no platform-specific integration is needed (kernel interface works by using /dev/sw_sync special
file and a well-defined set of ioctl()s).

[2013/01/31 antipov] Initial test version is uploaded to:
https://linaro-private.git.linaro.org/gitweb?p=android/linaro-android-kernel-test.git;a=summary

[2013/02/19 antipov] As of https://android-build.linaro.org/builds/~linaro-android-restricted/juice-aosp/#build=121, CONFIG_SYNC and CONFIG_SW_SYNC kernel configuration options are disabled. This should be enabled by default since this test
requires /dev/sw_sync special file.

[2013/02/26 antipov] CONFIG_SW_SYNC_USER should be enabled too; reopen https://bugs.launchpad.net/linaro-android/+bug/1131078.

[2013/04/16] all the sync patches appear to be in place in linux-linaro

(?)

Work Items

Work items for 13.01:
Contact John Stultz about the Androidization branch: DONE
Contact John Stultz and Jesse Barker about the sync driver: DONE
Assess the sync driver for userland and kernelspace interfaces, better understand the functionality it provides: DONE

Work items for 13.02:
Write a unit test for the sync driver: DONE
[fagerstedt-axel] Integrate unit test into private git repo: DONE

Work items for 13.03:
Include the unit test in the build: DONE
Make sure the unit test runs: DONE

Work items for 13.04:
[fagerstedt-axel] As the new kernel maintainer, review the work items if they still make sense: DONE
[fagerstedt-axel] Help ensure that the sync driver makes it into the ARM LTs kernel: DONE
[fagerstedt-axel] Ensure juice-aosp with the affected ARM LT tree boots, debug issues that arise: DONE
[amit-khare] Include the unit-test write up in the test plan available from Zach Pfeffer and include test overview and how to run it: DONE
[amit-khare] Monitor test results and work on bugs: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.